[Python] 프로그래머스 - Weekly Challenge 8주차

728x90
반응형

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

 

코딩테스트 연습 - 8주차

[[10, 7], [12, 3], [8, 15], [14, 7], [5, 15]] 120 [[14, 4], [19, 6], [6, 16], [18, 7], [7, 11]] 133

programmers.co.kr

 

1. 두개의 명함을 비교할때 나올 수 있는 케이스는 2가지 밖에 없다.

    A  B      A  B

    C  D 와  D  C   두가지밖에 없다.  첫번째에서 A B를 뒤집으면 두번째 케이스와 같아지기 때문이다.

 

2. 결국 이 두가지 케이스를 a, b에 넣어주고 a의 명함넓이가 b 명함넓이보다 작으면 

   answer = a, 반대면 answer = b를 해주면서 answer값을 계속 갱신해준다.

 

3. 마지막에 answer[0] * answer[1]로 넓이를 return해준다.

 

def solution(sizes):
    answer = [sizes[0][0], sizes[0][1]]
    for s in sizes[1:]:
        a = [max(s[0], answer[0]), max(s[1], answer[1])]
        b = [max(s[0], answer[1]), max(s[1], answer[0])]

        if a[0] * a[1] < b[0] * b[1]:
            answer = a
        else:
            answer = b

    return answer[0] * answer[1]
728x90
반응형
TAGS.

Comments