2026. 7. 11. 15:28ㆍ파이썬
이번 문제는 이중 for문을 이용해 중첩 리스트의 모든 값을 확인하고, 전체 원소 개수와 합계를 계산하는 문제입니다.
문제
다음 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)
주요 포인트
이 문제에서 확인해야 할 내용은 다음과 같습니다.
- 중첩 리스트의 구조
- 바깥쪽 for문과 안쪽 for문의 역할
- tot += j를 이용한 값의 누적
- len(i)를 이용한 원소 개수 계산
- print()에 여러 값을 전달했을 때의 출력 형식
풀이
1. 중첩 리스트 확인
변수 a에는 두 개의 리스트가 들어 있습니다.
a = [[1, 1, 0, 1, 0],
[1, 0, 1, 0]]
구조를 나누어 보면 다음과 같습니다.
a[0] = [1, 1, 0, 1, 0]
a[1] = [1, 0, 1, 0]
첫 번째 리스트에는 원소가 5개 있고, 두 번째 리스트에는 원소가 4개 있습니다.
2. 변수 초기화
tot, totsu = 0, 0
두 변수의 초기값은 다음과 같습니다.
tot = 0
totsu = 0
tot은 리스트 안에 있는 숫자의 합계를 저장합니다.
totsu는 리스트 안에 있는 전체 원소의 개수를 저장합니다.
3. 바깥쪽 반복문
for i in a:
바깥쪽 반복문은 a 안에 있는 리스트를 하나씩 변수 i에 저장합니다.
반복 순서는 다음과 같습니다.
첫 번째 반복: i = [1, 1, 0, 1, 0]
두 번째 반복: i = [1, 0, 1, 0]
4. 첫 번째 리스트 처리
첫 번째 반복에서 i의 값은 다음과 같습니다.
i = [1, 1, 0, 1, 0]
안쪽 반복문은 리스트의 값을 하나씩 변수 j에 저장합니다.
for j in i:
tot += j
j에 들어가는 값은 다음과 같습니다.
1 → 1 → 0 → 1 → 0
합계를 계산하면 다음과 같습니다.
tot = 0 + 1 + 1 + 0 + 1 + 0
tot = 3
그다음 현재 리스트의 길이를 totsu에 더합니다.
totsu = totsu + len(i)
첫 번째 리스트의 원소 개수는 5개입니다.
len(i) = 5
totsu = 0 + 5
totsu = 5
첫 번째 반복이 끝난 후의 값은 다음과 같습니다.
tot = 3
totsu = 5
5. 두 번째 리스트 처리
두 번째 반복에서 i의 값은 다음과 같습니다.
i = [1, 0, 1, 0]
안쪽 반복문에서 숫자를 모두 더합니다.
1 + 0 + 1 + 0 = 2
기존 tot의 값은 3이므로 다음과 같이 누적됩니다.
tot = 3 + 2
tot = 5
두 번째 리스트의 원소 개수는 4개입니다.
len(i) = 4
기존 totsu의 값은 5이므로 다음과 같이 누적됩니다.
totsu = 5 + 4
totsu = 9
두 번째 반복까지 끝난 후의 값은 다음과 같습니다.
tot = 5
totsu = 9
실행 과정 정리
첫 번째 리스트:
[1, 1, 0, 1, 0]
원소 개수: 5
숫자 합계: 3
두 번째 리스트:
[1, 0, 1, 0]
원소 개수: 4
숫자 합계: 2
전체 원소 개수는 다음과 같습니다.
5 + 4 = 9
전체 숫자의 합은 다음과 같습니다.
3 + 2 = 5
출력문 분석
print(totsu, tot)
print()에 두 개의 값을 쉼표로 전달하면 값 사이에 공백이 하나 들어갑니다.
현재 변수의 값은 다음과 같습니다.
totsu = 9
tot = 5
따라서 다음과 같이 출력됩니다.
정답
9 5
시험에서 주의할 부분
i는 숫자가 아니라 내부 리스트입니다
for i in a:
여기서 i에는 다음 값이 차례대로 들어갑니다.
[1, 1, 0, 1, 0]
[1, 0, 1, 0]
j에는 리스트 안의 숫자가 들어갑니다
for j in i:
첫 번째 반복에서는 다음 숫자가 차례대로 들어갑니다.
1, 1, 0, 1, 0
두 번째 반복에서는 다음 숫자가 차례대로 들어갑니다.
1, 0, 1, 0
len(i)는 현재 내부 리스트의 길이입니다
첫 번째 반복에서는 다음과 같습니다.
len([1, 1, 0, 1, 0]) = 5
두 번째 반복에서는 다음과 같습니다.
len([1, 0, 1, 0]) = 4
따라서 전체 원소 개수는 9개입니다.
시험 풀이 요약
중첩 리스트의 첫 번째 리스트는 원소가 5개이고 숫자의 합은 3입니다.
두 번째 리스트는 원소가 4개이고 숫자의 합은 2입니다.
따라서 전체 원소 개수는 9개이고, 모든 숫자의 합은 5입니다.
최종 출력 결과는 다음과 같습니다.
9 5
'파이썬' 카테고리의 다른 글
| 계산기 클래스의 빈칸 완성하기(Chatgpt) (0) | 2026.07.11 |
|---|---|
| Python 2차원 리스트와 중첩 반복문 문제 풀이(Claude) (0) | 2026.07.11 |
| Python while 반복문과 f-string 문제 풀이(Claude) (0) | 2026.07.11 |
| 홀수만 더하고 반복문을 빠져나오다(Chatgpt) (0) | 2026.07.11 |
| Python 문자열 포맷 (폭과 정밀도) 문제 풀이(Claude) (0) | 2026.07.11 |