알고리즘/프로그래머스

[프로그래머스] 최소직사각형 for Python

정석이 2022. 3. 11. 19:19

 

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

 

코딩테스트 연습 - 최소직사각형

[[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 문제를 풀거닷

 

 

유형별 백준 문제도 풀거임..... 프로그래머스는 자바로 풀었던거 몇개는 포스팅은 안하려고 한다.

 

 

 

위 문제는 입력받은 가로, 세로 들에서 큰값만 모은 가로값 * 작은값만 모은 세로값 (혹은 그 반대)을 구해야 한다.

 

 

 

코드

def solution(sizes):
    answer = 0
    answer = max(max(x) for x in sizes) * max(min(x) for x in sizes)
    # max(x) for x in sizes 하면 각 사이즈[0],[1] 등에서 큰값만 뽑아냄, min도 마찬가지
    # 큰것만 뽑아낸거에서 큰거, 작은것만 뽑아낸거에서 작은거
    return answer

 

 

 

2차원 배열에서 그냥 max를 사용하면.. 그러니까

 

 

max(sizes)를 하면 쟤네를 다 더해서 가장 큰 열을 출력한다.

 

 

그리고 max(x) for x in sizes 를 리스트로 print() 해보면 각 열에서 max값들을 모은 list가 출력됨.

 

거기서 max 구하고 그 뒤도 마찬가지로 min 구해준 것이다~

 

 

 

내가 하려던 풀이를 그대로 구현한 코드를 발견했다.

 

 

def solution(sizes):
    w = 0
    h = 0
    
    for i in range(len(sizes)):
        sizes[i].sort()
        w = max(w, sizes[i][0])
        h = max(h, sizes[i][1])
        
    return w * h

 

 

원래 이렇게 sort()해서 풀려고 했는데 그렇게됐다.