티스토리 뷰

Python

[파이썬] while - else | 백준 2839

Nyugati 2023. 2. 15. 18:12

for 문과 마찬가지로 파이썬에서 while 문에 else 절이 붙을 수 있다.

 

while 조건문 :
	실행문1
else :
	실행문2

 

while 조건문이 거짓이라 실행문1이 수행되지 않을 때, else 절의 실행문2가 수행된다.

여기서 break 문에 의해 while 문을 탈출하게 된다면, else절은 수행되지 않는다.

 

 예시

백준 #2839 설탕배달

https://www.acmicpc.net/problem/2839

 

2839번: 설탕 배달

상근이는 요즘 설탕공장에서 설탕을 배달하고 있다. 상근이는 지금 사탕가게에 설탕을 정확하게 N킬로그램을 배달해야 한다. 설탕공장에서 만드는 설탕은 봉지에 담겨져 있다. 봉지는 3킬로그

www.acmicpc.net

 

문제와 풀이는 생략하고 정답 코드를 공개하면 다음과 같다.

n = int(input())
cnt = 0   

while n >= 0:
    if n % 5 == 0 :
        cnt += (n//5)
        print(cnt)
        break
    n -= 3
    cnt += 1 # 남은 설탕이 5의 배수가 될 때까지 3키로씩 빼 감
else : print(-1)

입력한 설탕 n킬로그램에서, n이 5로 나눠질 때까지(5의 배수) 3씩 빼고 봉지의 개수(cnt)는 1씩 더한다.

 

n>=0 조건을 만족할 때까지 이 과정을 반복하게 되는데, 만약 if 문의 break를 활용해서 빠져나오는 경우가 아니라면 전부 정확하게 n 킬로그램을 만들 수 없는 경우가 된다.

 

따라서 정확하게 n킬로그램을 만들 수 있는 경우를 while문-if문에서 구하고,

만들 수 없다면 while문을 빠져나와 else에서 -1을 출력하도록 만든다. 

 

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/02   »
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28
글 보관함