핵심 원리: break를 만나면 else는 실행되지 않음
1. while - else 문
조건식이 False가 되어 반복문이 정상적으로 종료될 때 else 블록이 실행
- 사용 예시: 설탕 배달 문제 (정확한 봉지 구성 찾기)
n = int(input()) # 예: 7
count = 0
while n >= 0:
if n % 5 == 0:
print(count + n // 5)
break # <--- 성공! 여기서 탈출하면 else는 무시됨
n -= 3
count += 1
else:
# n이 0보다 작아질 때까지 break를 못 만난 경우
print("-1 (정확하게 나눌 수 없습니다)")
2. for - else 문
리스트나 범위(range)를 끝까지 다 훑었을 때 else 블록이 실행
- 사용 예시: 소수(Prime Number) 판별
num = 13
for i in range(2, num):
if num % i == 0:
print(f"{num}은(는) 소수가 아닙니다.")
break # <--- 나누어떨어지는 수를 찾으면 탈출 (else 실행 안 함)
else:
# 2부터 num-1까지 한 번도 나누어떨어지지 않은 경우
print(f"{num}은(는) 소수입니다!")
3. 한눈에 비교하는 실행 흐름
| 상황 | break 발생 여부 | else 블록 | 비유 |
| 중도 하차 | Yes (찾음/성공/중단) | No (건너뜀) | "목표 달성! 조기 퇴근한다." |
| 정상 완주 | No (못 찾음/끝까지 함) | Yes (실행) | "끝까지 다 해봤는데 없네? 뒷정리하자." |
'BACKJOON' 카테고리의 다른 글
| [백준(Python)] 파이썬 자료형 - List, Deque, Heap, Dictionary, Set (0) | 2026.03.12 |
|---|---|
| [백준(Python)] BFS vs DFS (1) | 2026.03.12 |
| [백준(Python)] Input() (0) | 2026.03.10 |
| [백준(Java)] 11727. 2×n 타일링 2 ( 재귀 + 메모이제이션) (1) | 2025.03.27 |
| [백준(Java)] 13241. 최소공배수 (유클리드 호제법) (0) | 2025.03.27 |