코딩테스트 & 문제 풀이

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

Hicecream 2023. 5. 15. 00:12

2022년 7월 28일에 작성됨

 

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

 

프로그래머스

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

programmers.co.kr

 

 

문제 분석

명함을 가로로 수납하든 세로로 수납하든 지갑에 넣기만 하면 된다.

- 각 가로, 세로 중 큰 값을 가로, 작은 값을 세로로 둔다.
- 가로 값, 세로 값 중에서 가장 큰 값을 골라 그 둘을 곱해주면 최소 지갑의 크기가 된다.

ex) sizes의 원소가 [1, 2], [3, 4], [6, 5] 이렇게 있다고 가정하면,
가로: 2, 4, 6
세로: 1, 3, 5
최소 지갑의 크기: 가로 최댓값 * 세로 최댓값 = 6 * 5 = 30 이 된다.

 

 

소스 코드 (⭕)

def solution(sizes):
    
    w_max = 0
    h_max = 0
    
    for a, b in sizes:				# <for 반복문 구조> for 변수 in 리스트:
        
        if a < b:					# 세로(b)가 가로(a)보다 클 경우
            a, b = b, a			# 가로와 세로 값을 바꾸어 큰 값을 가로에 넣어줌
            
        if w_max < a:				# 가로 값들 중에 가장 큰 값 구하기
            w_max = a
            
        if h_max < b:				# 세로 값들 중에 가장 큰 값 구하기
            h_max = b

    return h_max * w_max			# 가로와 세로의 최대 길이를 곱한 값 반환

 

코드 분석

1. sizes 리스트에 존재하는 요소를 하나씩 확인하며, 가로의 길이(a)가 세로의 길이(b) 보다 더 크도록 만들어 준다.

 

2. 만약 가로의 길이가 w_max보다 크다면 w_max을 a로 설정한다.

 

3. 만약 세로의 길이가 h_max보다 크다면 h_max을 b로 설정한다.

 

4. 가로의 최대 길이(w_max)와 세로의 최대 길이(h_max)를 곱한 값을 반환한다.

 

 

 

end

파이썬에 아직 적응이 안돼서 너무 어려웠다..
if문은 c언어랑 구조가 비슷해서 괜찮았는데 for문은 시퀀스 객체, 튜플, 리스트 이런 용어들이 막 나와서 헷갈리고 뭐가 뭔지 정확히 모르겠다. 하다 보면 알게 되겠지ㅜ?