이직하고만다(분노)

99클럽 코테 스터디 7일차 TIL : 최소 직사각형(완전탐색)

xxo_ohii 2024. 5. 29. 10:52
728x90

 

 

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

 

프로그래머스

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

programmers.co.kr

 

오늘의 문제는 명함의 크기에 맞는 최소 크기의 지갑의 너비를 구하는 것

def solution(sizes):
    max_width = 0
    max_height = 0
    
    for size in sizes:
        width, height = size
        if width < height:
            width, height = height, width
        max_width = max(max_width, width)
        max_height = max(max_height, height)
    
    return max_width * max_height

 

어휘력이 안좋나 왤케 문제를 이해하는게 어려울까...?

 

결론적으로 가로는 최대값을 구하고 

세로는 최소값을 구하면 되는 문젠데

 

def solution(sizes):
    max_width = 0
    max_height = 0

 

먼저 함수선언하고(solution)

가로와 세로의 값을 담을 변수 두 개(max_width, max_height)를 초기화 해준다.

 

    for size in sizes:
        width, height = size 
        if width < height:
            width, height = height, width 
        max_width = max(max_width, width) 
        max_height = max(max_height, height)

 

for 문을 돌려서  

만약, sizes = [[60, 50], [30, 70], [60, 30], [80, 40]] 라면

size는 [60, 50] 과 같은 요소가 될 것이고

sizes를 순회할 것이다.

 

그리고 튜플 언패킹을 사용해서 size의 요소를

width와 height에 담아준다.

 

개념 설명 예시
튜플 언패킹 리스트나 튜플과 같은 시퀀스 자료형의 요소들을 개별 변수에 할당하는 간단하고 직관적인 방법 coordinates = (10, 20)
x, y = coordinates

x는 10이고, y는 20이 됨

dimensions = [100, 200]
width, height = dimensions

width는 100, height는 200이 됨

 

 

그리고 if문으로 width(가로)가 세로(height)보다 크게 설정한다.

-> 일관된 기준을 위함

 

max_width = max(max_width, width) 
  max_height = max(max_height, height)

 

width와 height를 max함수를 통해 

어떤게 제일 큰지 비교하며

 

결과적으로

max_width * max_height 

리턴하면 끝

728x90