알고리즘

[Programmers/Python] [PCCE 기출문제] 9번 / 지폐 접기

e_yejun 2024. 12. 16. 14:56

 

문제 설명

민수는 다양한 지폐를 수집하는 취미를 가지고 있습니다. 지폐마다 크기가 달라 지갑에 넣으려면 여러 번 접어서 넣어야 합니다. 예를 들어 지갑의 크기가 30 * 15이고 지폐의 크기가 26 * 17이라면 한번 반으로 접어 13 * 17 크기로 만든 뒤 90도 돌려서 지갑에 넣을 수 있습니다. 지폐를 접을 때는 다음과 같은 규칙을 지킵니다.

  • 지폐를 접을 때는 항상 길이가 긴 쪽을 반으로 접습니다.
  • 접기 전 길이가 홀수였다면 접은 후 소수점 이하는 버립니다.
  • 접힌 지폐를 그대로 또는 90도 돌려서 지갑에 넣을 수 있다면 그만 접습니다.

지갑의 가로, 세로 크기를 담은 정수 리스트 wallet과 지폐의 가로, 세로 크기를 담은 정수 리스트 bill가 주어질 때, 지갑에 넣기 위해서 지폐를 최소 몇 번 접어야 하는지 return하도록 solution함수를 완성해 주세요.

 

 

문제 풀이

문제에서 지폐를 90도 돌려서 넣어도 된다고 했으므로, 지폐의 길이가 작은 부분과 지갑의 길이가 작은 부분, 그리고 지폐의 길이가 긴 부분과 지갑의 길이가 긴 부분을 잘 비교하면서 지폐를 접어준다.

만약 한 부분이라도 지폐의 길이가 길다면, 길이가 긴 지폐 부분을 반으로 접어주면 된다.

 

 

풀이 코드

def solution(wallet, bill):
    answer = 0
    while True:
        if min(bill) <= min(wallet) and max(bill) <= max(wallet):
            break
        idx = bill.index(max(bill))
        bill[idx] //= 2
        answer += 1
    return answer