콘텐츠로 이동

3단원 과제 정답: while 반복문


문제 1. 카운터와 누적

① 5
② 15

해설

반복 i (증가 전) i (증가 후) total
1 0 1 1
2 1 2 3
3 2 3 6
4 3 4 10
5 4 5 15

i = 5일 때 i < 5False가 되어 종료. total = 1 + 2 + 3 + 4 + 5 = 15


문제 2. break 실행 시점

① 1
② 2
③ 3
④ 4
⑤ end: 5

해설

반복 i (증가 후) i == 5? 동작
1 1 아니오 print(1)
2 2 아니오 print(2)
3 3 아니오 print(3)
4 4 아니오 print(4)
5 5 break → 즉시 종료

핵심 함정: break가 실행되면 print(i)는 실행되지 않습니다. print("end:", i)는 반복문 바깥이므로 항상 실행됩니다.


문제 3. continue 건너뛰기

① 1
② 2
③ 4
④ 5
⑤ 7
⑥ 8
⑦ 10

해설

i i % 3 동작
1 1 print(1)
2 2 print(2)
3 0 continue (건너뜀)
4 1 print(4)
5 2 print(5)
6 0 continue (건너뜀)
7 1 print(7)
8 2 print(8)
9 0 continue (건너뜀)
10 1 print(10)i < 10False → 종료

핵심 함정: continueprint(i)만 건너뛰고, i += 1continue 위에 있으므로 무한 루프에 빠지지 않습니다. i = 10일 때 루프 조건 i < 10False가 되어 종료됩니다.


문제 4. 누적 합의 종료 조건

① 6
② 21

해설

반복 n total total < 20?
1 1 1
2 2 3
3 3 6
4 4 10
5 5 15
6 6 21 거짓 → 종료

핵심 함정: total += n 이후 조건을 검사합니다. total = 21이 된 뒤에야 total < 20이 거짓이 되어 루프가 끝납니다. total = 15일 때 아직 참이므로 한 번 더 실행됩니다.


문제 5. 1부터 합해서 100 넘기기

total = 0
n = 0

while total <= 100:
    n += 1
    total += n

print("Count:", n)
print("Sum:", total)

빈칸 정답

빈칸 정답 이유
total ______ 100 <= 합이 100 이하인 동안 계속 더함. 100을 넘으면 종료
total += ______ n 1, 2, 3, ... 을 차례로 더함

실행 추적

n=1  → total = 1
n=2  → total = 3
...
n=13 → total = 91    (91 <= 100, 계속)
n=14 → total = 105   (105 <= 100이 거짓, 종료)

<= 대신 <를 쓰면 합이 정확히 100일 때 한 번 더 돌게 됩니다. 100 자체는 넘지 않았으므로 <=가 맞습니다.