강의

멘토링

로드맵

인프런 커뮤니티 질문&답변

동훈신님의 프로필 이미지
동훈신

작성한 질문수

(2026 최신!) 일주일만에 합격하는 정보처리기사 실기

모의고사 1회

모의고사1회 3번 파이썬문제

해결된 질문

작성

·

56

·

수정됨

0

강사님, 안녕하세요

모의고사1회 3번 파이썬문제

  • 첫번째 출력이 아래와 같이 되는거 아닌가요?

    • len(a) = 1

    • sum([2]) = 2

       

답변 2

0

주말코딩님의 프로필 이미지
주말코딩
지식공유자

그렇게 처음 a = build(2)를 실행한 직후만 보면 맞습니다.

 

그 시점의 a는:

[[2]]

그래서 그때 바로 출력하면:

len(a) = 1
sum(a[-1]) = sum([2]) = 2

입니다.

 

하지만 이 코드에서는 바로 출력하지 않고, 그 뒤에 build(5), build(3)를 또 호출합니다.

def build(v, bucket=[]):

bucket=[] 는 함수가 호출될 때마다 새로 만들어지는 것이 아니라,

함수 정의 시 한 번만 만들어져서 계속 재사용됩니다.

 

그래서:

a = build(2)

후의 기본 bucket:

[[2]]

다음:

b = build(5)

같은 bucket을 계속 써서:

[[2], [5, 2, 1]]

다음:

d = build(3)

또 같은 bucket을 써서:

[[2], [5, 2, 1], [3, 1, 2]]

즉, a는 처음 결과를 복사해 둔 값이 아니라 같은 리스트를 가리키는 참조(reference) 입니다.

 

그래서 마지막에 출력하는 시점의 a는 이미:

[[2], [5, 2, 1], [3, 1, 2]]

가 되어 있습니다.

 

따라서 첫 번째 출력은:

print(len(a), sum(a[-1]))

 

  • len(a) → 3

  • a[-1] → [3, 1, 2]

  • sum(a[-1]) → 6

     

즉,

3 6

이 맞습니다.

 

정리하면:

  • a = build(2) 직후만 보면 1 2 맞음

  • 하지만 실제 print 시점에는 같은 기본 리스트가 이후 호출들로 변경되어서 3 6이 됨

 

실제 온라인 인터프리터로 실행한 부분 캡쳐해서 올려드립니다.

 

스크린샷 2026-04-16 오전 8.25.30.png

 

0

안녕하세요, 인프런 AI 인턴입니다. 동훈신님.

질문해 주신 내용은 Python의 기본 함수 len()sum()을 사용하는 방식에 대한 혼동이 있으신 것 같습니다. 각각의 함수는 리스트나 다른 iterable 타입을 처리할 때 주로 사용되며, 그 결과는 어떤 iterable이 주어지냐에 따라 달라질 수 있습니다.

함수 설명

  1. len(a): 이 함수는 iterable, 즉 리스트 등과 같은 시퀀스의 길이나 요소의 수를 반환합니다. 만약 a가 리스트라면, 그 안에 들어 있는 요소의 갯수를 반환하게 됩니다. 예를 들어, a = [2] 일 경우, 길이는 1이 됩니다. 따라서 len([2])의 결과는 1 입니다.

  2. sum(a): 이 함수는 리스트의 모든 요소를 더한 값을 반환합니다. 예를 들어, 리스트가 [2] 인 경우, sum([2]) 의 결과는 2가 됩니다. 모든 요소를 더한 결과를 제공하기 때문에 리스트의 요소가 숫자일 때 유용합니다.

관련 게시물

강의 내용이나 유사한 예제 문제에 대한 자세한 설명은 아래 링크를 통해 확인하실 수 있습니다:

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.

현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏

추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

동훈신님의 프로필 이미지
동훈신

작성한 질문수

질문하기