목차
📝 문제
📝 문제
🎯 알고리즘
💡 문제 이해
- wallet = [지갑의 가로, 세로]
- bill = [지폐의 가로, 세로]
지폐를 반으로 접을 수 있음 (한 번 접을 때마다 긴 변을 반으로) 지갑에 들어갈 때까지 지폐를 접는 최소 횟수를 구하는 문제.
💡 문제 접근
- 한 번 접을 때마다 지폐의 긴 변을 절반으로 접을 수 있음
- 가로와 세로 순서는 상관없이 지폐가 어떤 방향으로든 지갑 안에 들어가기만 하면 됨 (즉, 회전 가능)
- bill을 계속 접는다
- 긴 쪽을 반으로 접는다 (max(bill) 기준)
- 지갑보다 작아질 때까지 반복
- min(bill) > min(wallet) 또는 max(bill) > max(wallet)인 동안 반복
- 접을 때마다 answer += 1
- 최종 접은 횟수 반환
✅ 실습 인증 _코드
def solution(wallet, bill):
answer = 0
while min(bill)> min(wallet) or max(bill) > max(wallet):
if bill[0]> bill[1]:
bill[0] = bill[0]//2
else:
bill[1] = bill[1]//2
answer+=1
return answer
'알고리즘 > python' 카테고리의 다른 글
[프로그래머스/Python] 250125번 (0) | 2025.04.22 |
---|---|
[프로그래머스/Python] 42576번: 완주하지 못한 선수 (0) | 2025.04.22 |
[프로그래머스/Python] 12943번: 콜라츠 추측 (0) | 2025.04.21 |
[백준/Python] 1049번: 기타줄 (0) | 2025.04.11 |
[백준/Python] 1100번: 하얀 칸 (0) | 2025.04.11 |