https://programmers.co.kr/learn/courses/30/lessons/86491?language=python3 

 

코딩테스트 연습 - 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. 지갑 크기를 명함 크기들과 순차적으로 비교하면서 갱신해 나간다.
    1. 기존 지갑 크기보다 명함의 크기가 더 크다면 갱신하는 방식
    2. 명함을 가로 방향과 세로 방향으로 집어넣을수 있으므로 각각의 케이스에 맞추어서 지갑의 크기를 갱신해 보고 지갑이 최소 넓이가 되는 경우로 지갑의 크기를 갱신시켜 준다.
  2. 최종적으로 갱신된 지갑의 넓이를 리턴해주면 된다.

소스 코드


def solution(sizes):
    answer = 0
    
    card_w = 0
    card_h = 0
    for w, h in sizes:
        temp_w1, temp_h1 = max(w, card_w), max(h, card_h)
        temp_w2, temp_h2 = max(w, card_h), max(h, card_w)
        
        if temp_w1 * temp_h1 < temp_w2 * temp_h2:
            card_w, card_h = temp_w1, temp_h1
        else:
            card_w, card_h = temp_w2, temp_h2
    
    answer = card_w * card_h
    return answer

 

+ Recent posts