Python 2차원 리스트와 중첩 반복문 문제 풀이(Claude)
2026. 7. 11. 15:29ㆍ파이썬
📌 문제
다음 Python으로 구현된 프로그램을 분석하여 그 실행 결과를 쓰시오.
a = [[1,1,0,1,0],
[1,0,1,0]]
tot,totsu = 0, 0
for i in a:
for j in i:
tot += j
totsu = totsu + len(i)
print(totsu, tot)
단계별 실행
a는 리스트를 담은 리스트(2차원 리스트)입니다.
a[0] = [1, 1, 0, 1, 0] (길이 5)
a[1] = [1, 0, 1, 0] (길이 4)
바깥 반복문 — i는 a의 각 줄(하위 리스트) 안쪽 반복문 — j는 그 줄에 담긴 각 숫자
1번째 바깥 반복 (i = [1,1,0,1,0])
안쪽 반복으로 tot에 각 숫자를 더합니다.
tot = 0 + 1 + 1 + 0 + 1 + 0 = 3
안쪽 반복이 끝난 후, totsu에 len(i)(리스트 길이 5)를 더합니다.
totsu = 0 + 5 = 5
2번째 바깥 반복 (i = [1,0,1,0])
tot = 3 + (1+0+1+0) = 3 + 2 = 5
totsu = 5 + 4 = 9
출력
print(totsu, tot)
✅ 최종 실행 결과
9 5
⚠️ 함정 포인트
- totsu는 개수(길이)의 합이고, tot은 숫자 값들의 합입니다. 이름이 비슷해서 헷갈리기 쉽습니다.
- totsu = totsu + len(i)는 안쪽 for문의 바깥에 있습니다(들여쓰기 확인). 그래서 숫자 하나마다가 아니라 바깥 반복 1번당 딱 한 번씩만 실행됩니다.
- 출력 순서가 (totsu, tot) — 변수를 선언한 순서(tot, totsu)와 반대로 출력하므로 9 5가 되지, 5 9가 아닙니다.
- 들여쓰기가 로직을 결정한다 — totsu 갱신 줄이 안쪽 for문과 같은 들여쓰기인지 다른지에 따라 결과가 완전히 달라집니다.
🎯 핵심 개념 정리
2차원 리스트 (리스트의 리스트)
a = [[1, 2], [3, 4, 5]]
a[0] # [1, 2]
a[1] # [3, 4, 5]
len(a[1]) # 3 (하위 리스트의 길이)
중첩 for문
바깥 반복문이 한 번 돌 때마다, 안쪽 반복문이 전체를 한 바퀴 돕니다.
for i in [[1,2],[3,4]]:
for j in i:
print(j, end=' ')
# 1 2 3 4
들여쓰기 위치가 실행 시점을 결정
for i in a:
for j in i:
tot += j # 숫자 하나마다 실행
totsu += len(i) # i(한 줄) 처리가 끝날 때마다 실행
같은 줄을 for j in i: 안으로 넣으면 결과가 완전히 달라집니다.
✍️ 시험 답안용 한 줄 풀이
a의 첫 번째 줄 [1,1,0,1,0]은 합이 3, 길이가 5이고, 두 번째 줄 [1,0,1,0]은 합이 2, 길이가 4이다. tot은 두 줄의 합을 모두 더한 5, totsu는 두 줄의 길이를 더한 9가 된다. print(totsu, tot)이므로 출력은 9 5이다.
🧠 미니 퀴즈
- totsu = totsu + len(i)를 안쪽 for j in i: 문 안으로 옮기면 결과는 어떻게 될까요?
- a에 [1,1,1]을 세 번째 줄로 추가하면 tot과 totsu는 각각 얼마가 될까요?
- print(totsu, tot)을 print(tot, totsu)로 바꾸면 출력은?
정답
- totsu가 j가 실행될 때마다(즉 숫자 하나당 한 번씩) 더해지므로, 전체 숫자 개수만큼 len(i)가 반복해서 더해집니다. 첫 줄에서 5번 반복하며 매번 5씩 더하고(총 25), 둘째 줄에서 4번 반복하며 매번 4씩 더해서(총 16), totsu = 25+16 = 41이 됩니다. tot은 그대로 5.
- [1,1,1]의 합은 3, 길이는 3이므로 tot = 5+3 = 8, totsu = 9+3 = 12
- 5 9 — 순서만 바뀌어서 그대로 출력됩니다.
'파이썬' 카테고리의 다른 글
| Python 클래스와 메서드 정의 빈칸 채우기 문제 풀이(Claude) (0) | 2026.07.11 |
|---|---|
| 계산기 클래스의 빈칸 완성하기(Chatgpt) (0) | 2026.07.11 |
| 중첩 리스트를 순회해 원소 개수와 합계 구하기(Chatgpt) (0) | 2026.07.11 |
| Python while 반복문과 f-string 문제 풀이(Claude) (0) | 2026.07.11 |
| 홀수만 더하고 반복문을 빠져나오다(Chatgpt) (0) | 2026.07.11 |