728x90
문제링크 : https://programmers.co.kr/learn/courses/30/lessons/86491
문제는 이해하기 쉬웠다.
그래서 한 명함의 크기를 가로를 크게, 세로를 작게 소팅하여 정리해준다음에 가로에서 최대값과 세로에서 최대값을 구하면 될 것이라고 생각해서 코드를 짰다.
def solution(sizes):
resizes = []
for i in range(len(sizes)):
resizes.append(sorted(sizes[i], reverse=True))
a = resizes[0][0]
b = resizes[0][1]
for i in resizes:
if i[0] > a:
a = i[0]
if i[1] > b:
b = i[1]
elif i[1] > b:
b = i[1]
return a*b
문제는 해결하긴 했지만 꽤나 내용이 길고 복잡하게 보이는 부분이 있어서 아쉬움이 남았다
그래서 다른 사람들의 풀이를 보았다.
1번 풀이
def solution(sizes):
return max(max(x) for x in sizes) * max(min(x) for x in sizes)
min, max를 정말 잘 활용한 코드인 듯하다...이런 방법이 있다니 반성반성
2번 풀이
solution = lambda sizes: max(sum(sizes, [])) * max(min(size) for size in sizes)
함수로 나타내진 않았지만 lambda함수를 잘 활용한 모습이 인상적이었다.
내가 lambda와 map에 약한데 이부분에 대해서 좀더 공부하게 된 계기가 되었다.
728x90
'코딩테스트' 카테고리의 다른 글
[프로그래머스]행렬의 덧셈 (0) | 2021.12.05 |
---|---|
[프로그래머스]없는 숫자 더하기 (0) | 2021.12.05 |
[프로그래머스]나머지가 1이 되는 수 찾기 (0) | 2021.12.04 |
프로그래머스 - 124 나라의 숫자 (0) | 2021.09.15 |
LG 코딩테스트 예제 - 마리오 게임 (0) | 2021.09.07 |