728x90
풀이
def solution(sizes):
answer = 0
max1 = max(map(max, sizes))
max2 = max(map(min, sizes))
answer = max1 * max2
return answer
내 풀이
- 가로 세로를 통틀어 가장 긴 길이(max1)를 구하고, 각 직사각형 안에서 가로 세로 중 작은 것들 중에서 가장 큰 길이(max2)를 구한 뒤 곱해서 답을 구했다.
- 예를 들어 sizes가 [[60, 50], [30, 70], [60, 30], [80, 40]]로 주어진 경우, 가장 긴 길이는 80이다. (max1 = 80) 이렇게 구한 길이가 명함 지갑의 한 변이 된다.
- 가로 세로를 통틀어 가장 긴 길이(max1)를 구하고, 각 직사각형 안에서 가로 세로 중 작은 것들 중에서 가장 큰 길이(max2)를 구한 뒤 곱해서 답을 구했다.
- 명함 지갑의 나머지 한 변은 각 직사각형에서 가로 세로 중 작은 길이들의 최대값을 구하면 되는데(긴건 이미 max1 안에 포함되므로), [60, 50] 직사각형의 경우 둘 중 긴건 60인데 이건 80 안에 들어가므로 50 즉, 둘 중 작은 길이만 고려하면 된다. 따라서 50, 30, 30, 40 중 max를 구하면 50이 max가 되므로 max2=50.
- answer = max1 * max2
map(function, iterable)
- max1 = max(map(max, sizes)) : 2차원 배열에서 max 요소를 구하는 식이다. 처음에는 반복문 돌면서 구했는데 map을 사용하면 더 간단하게 구할 수 있다고 해서 활용해봤다.
- 먼저 map(max, sizes)를 통해 각 배열에서 큰 요소를 추출한다. 그리고 여기서 max를 하면 이 중 가장 큰 값을 확인할 수 있다.
- 예를 들어 sizes가 [[60, 50], [30, 70], [60, 30], [80, 40]] 인 경우 map(max, sizes)를 통해 [60, 70, 60, 80]이 나온다.
반응형
'알고리즘 > 프로그래머스' 카테고리의 다른 글
[프로그래머스 코딩테스트 고득점 Kit / 완전탐색] 카펫 (python) (0) | 2024.01.22 |
---|---|
[프로그래머스 코딩테스트 고득점 Kit / 완전탐색] 모의고사 (python) (0) | 2024.01.17 |
[프로그래머스 코딩테스트 고득점 Kit / 해시] 베스트 앨범 (python) (0) | 2024.01.15 |
[프로그래머스 코딩테스트 고득점 Kit / 해시] 의상 (python) (0) | 2024.01.13 |
[프로그래머스 코딩테스트 고득점 Kit / 해시] 전화번호 목록 (python) (1) | 2024.01.10 |