중첩 리스트를 순회해 원소 개수와 합계 구하기(Chatgpt)

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)

주요 포인트

이 문제에서 확인해야 할 내용은 다음과 같습니다.

  1. 중첩 리스트의 구조
  2. 바깥쪽 for문과 안쪽 for문의 역할
  3. tot += j를 이용한 값의 누적
  4. len(i)를 이용한 원소 개수 계산
  5. 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