명함을 가로 세로를 바꿔서 지갑에 넣을 수 있기 때문에, 지갑의 방향을 고정하고 카드의 방향만 바꿔가면서 최적의 지갑 크기를 계산하면 된다. 여기서 주목 해야할 부분은 지갑의 방향을 고정했다는 점인데, 즉 카드의 가로 세로 길이를 서로 바꿀 때 어느쪽에 더 큰 값을 넣을지 기준을 정해야한다는 뜻이다.
코드
before
def solution(sizes):
row = []
col = []
for card in sizes:
if card[0] > card[1]:
row.append(card[0])
col.append(card[1])
else :
row.append(card[1])
col.append(card[0])
return max(row) * max(col)
after
def solution(sizes):
return max(max(x) for x in sizes) * max(min(x) for x in sizes)
같은 접근이지만, 아래 코드는 내가 쓴 수식을 한줄로 표현했다. 파이썬스러움을 익혀나가는 과정이란...
'PS > 프로그래머스' 카테고리의 다른 글
[1차] 다트 게임 (lv1) (0) | 2022.07.08 |
---|---|
[1차] 비밀지도 (lv1) (0) | 2022.07.08 |
2016년 (lv1) (0) | 2022.07.04 |
약수의 개수와 덧셈 (lv1) (0) | 2022.07.04 |
3진법 뒤집기 (lv1) (0) | 2022.07.04 |