Notice
Recent Posts
Recent Comments
Link
«   2024/07   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31
Tags
more
Archives
Today
Total
관리 메뉴

김찬양의 개발일지

21일차. 최소직사각형 본문

코딩테스트/Programmers Level 1

21일차. 최소직사각형

자유로운영혼이다냥 2023. 12. 14. 20:18

링크

https://school.programmers.co.kr/learn/courses/30/lessons/86491

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 


 

문제


 

정답

def solution(sizes):
    width = max(map(lambda x:max(x[0], x[1]), sizes))
    height = max(map(lambda x:min(x[0], x[1]), sizes))
    return width*height

 

풀이과정

두 수의 합이 같을떄, 두 수를 곱하는 방법중 가장 큰 수를 얻는방법은 두 수가 가장 비슷한것이다.

이 경우 합이 같지는 않지만 최댓값과 최솟값을 곱할 떄 합도 가장 작으면서, 곱 역시 가장 작은경우이다.

max(map(lambda x:max(x[0], x[1]), sizes))

각 항목의 두 값중 큰값들을 map을 이용해서 구하고, 그것에 max를 씌운다.

max(map(lambda x:min(x[0], x[1]), sizes))

또한 다른값은 작은값들을 map을 이용해서 구하고 그 값에도 max를 씌운다.

이렇게 하고 두 수를 곱하면 최솟값이 나온다.