inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

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

모의고사 1회

모의고사 1회 3번문제

해결된 질문

71

yundevil

작성한 질문수 6

0

강의좀 올려주세여.ㅠㅠ

이해안가는 부분이 너무 명확해여.

그래서 오히려 이문제는 다른 문제까지 헷갈리게 만드는거같아여.

이문제를 푸는 사람들이면 같은 생각할꺼입니다.

그리고 자료 pdf 는 단어 검색이 안돼서. 궁금한

파트를 명시적으로 찾기가 어려워요.

python java c 정보처리기사 정보처리산업기사

답변 3

0

주말코딩

안녕하세요, 해당 문제는 리스트라는 것이 하나의 객체라는 것을 인식해야합니다.


핵심 개념 중 하나인 가변 기본값(mutable default argument)에 대해서 설명드립니다.

def build(v, bucket=[]):

이 코드에서 bucket=[]는 함수를 호출할 때마다 새로 만들어지는 것이 아닙니다. def build(...)라는 문장이 실행되는 시점, 즉 함수가 정의되는 순간에 []가 딱 한 번만 생성됩니다. 이후 bucket 인자를 넘기지 않고 호출하면, 그때마다 새 리스트가 아니라 이미 만들어진 그 하나의 리스트를 계속 재사용합니다.

비유하자면, 선생님이 책상에 분필 통 하나를 놔두고 "분필 없으면 이거 쓰라"고 한 것과 같습니다. 학생들은 각자 새 통을 받는 게 아니라 모두 같은 통을 공유합니다. 한 학생이 통에 분필을 넣고 가면, 다음 학생이 왔을 때도 그 통에는 그 분필이 그대로 들어있습니다.

또한 리스트 변수는 값 자체가 아니라 리스트라는 상자를 가리키는 이름표와 같습니다. 따라서 bucket 인자를 생략하고 호출한 결과를 받는 변수들은 모두 같은 상자를 가리키는 서로 다른 이름표일 뿐입니다. 반면 build(7, [])처럼 직접 새 리스트를 넘기면, 그것은 기본값 상자와 무관한 완전히 별개의 새 상자가 됩니다.

한 줄씩 추적

a = build(2) 기본 상자(처음엔 빈 리스트)를 사용합니다.

  • item = [2]

  • bucket이 비어있으므로 if bucket은 거짓 → extend 실행 안 됨

  • bucket.append(item) → 기본 상자는 [[2]]가 됨

  • a는 이 기본 상자를 가리킴

b = build(5) 같은 기본 상자(현재 [[2]])를 다시 사용합니다.

  • item = [5]

  • bucket이 비어있지 않으므로 if bucket은 참

  • bucket[-1][2] → 마지막 원소는 2

  • len(bucket)1

  • item.extend([2, 1])item = [5, 2, 1]

  • bucket.append(item) → 기본 상자는 [[2], [5, 2, 1]]

  • b도 같은 기본 상자를 가리킴

c = build(7, []) 새 빈 리스트를 직접 넘겼으므로 기본 상자와 무관합니다.

  • item = [7], bucket이 비어있으므로 그대로 append

  • c = [[7]] (독립적인 상자)

d = build(3) 다시 기본 상자(현재 [[2], [5, 2, 1]])를 사용합니다.

  • item = [3]

  • bucket[-1][5, 2, 1] → 마지막 원소는 1

  • len(bucket)2

  • item.extend([1, 2])item = [3, 1, 2]

  • bucket.append(item) → 기본 상자는 [[2], [5, 2, 1], [3, 1, 2]]

  • d도 같은 기본 상자를 가리킴

결론: a, b, d는 서로 다른 변수처럼 보이지만 실제로는 동일한 상자를 가리키므로, 최종적으로 세 변수 모두 [[2], [5, 2, 1], [3, 1, 2]]를 참조합니다.

출력 계산

print(len(a), sum(a[-1]))a = [[2], [5, 2, 1], [3, 1, 2]]

  • len(a)3

  • a[-1] = [3, 1, 2], sum63 6

print(len(c), c[0][0])c = [[7]]

  • len(c)1

  • c[0][0]71 7

print(sum(sum(x) for x in d))d = [[2], [5, 2, 1], [3, 1, 2]]

  • sum([2]) = 2

  • sum([5, 2, 1]) = 8

  • sum([3, 1, 2]) = 6

  • 총합: 2 + 8 + 6 = 1616

최종 출력

3 6
1 7
16

참고

실무에서는 이런 예상치 못한 공유 상태를 방지하기 위해 가변 객체를 기본값으로 직접 쓰지 않고, 다음과 같이 작성하는 것이 일반적입니다.

def build(v, bucket=None):
    if bucket is None:
        bucket = []
    ...

0

yundevil

감사합니다, 이해가 된거같아여.ㅠㅠ낼시험인데. 이해안가는 문제가 생기면 뭔가 불안..

0

yundevil

그럼 모의고사 1회 3번 문제 관련 강의는

커리큘럼 몇번일까여?

0

인프런 AI 인턴

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

모의고사 관련하여 이해가 어려운 부분이 있다고 하셔서 강의 자료 및 PDF 자료의 검색성에 대해 문의 주셨네요. 모의고사 문제 해결은 기본 개념 숙지 후에 문제 풀이가 필요하므로, 강의에서 강조된 부분을 중점적으로 복습하시면 이해가 좀 더 수월할 수 있습니다.

아래 유사한 질문과 답변들을 확인하여 강사님께서 제공하신 팁과 자료 제공 여부 등 도움이 될 만한 정보를 안내드립니다.

  1. 안녕하세요^^ 오늘 수강신청 했습니다.

    • 이 답변에서는 PDF 자료 제공에 대한 강사님의 안내를 확인할 수 있습니다. 역시, 상세 내용을 PDF로 제공하며 검색 기능이 부족할 수 있지만, 강사님은 자료의 시각화 및 정리를 통해 문제 해결을 돕고자 합니다.
  2. 이론 문제 학습하기_파일로

    • 이론 문제의 파일 제공에 대한 요청 및 강사님의 준비 계획에 대한 정보를 받으실 수 있습니다. 이론과 요약 내용도 함께 준비하고 있음을 언급하고 있습니다.

자료의 검색성 향상을 위해 키워드별로 앞서 설명한 강의 포인트를 노트에 따로 정리하시는 것도 유익할 수 있습니다. PDF의 경우, 현재 제공된 자료가 관련 키워드와 함께 잘 연계될 수 있도록 강사님께 추가적인 개선 요청을 해보시면 좋겠습니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

정처기 26-2회. 9번 질문드립니다!

0

19

1

이론 보면서 질문이 있습니다.

0

24

2

정보처리기사 실기 26년 2회 SRT 스케줄링 문제 단위 질문

0

34

2

유튜브(정보처리기사 실기 | 26년 2회 기출문제 코드 해설)

0

51

2

262 정처기 실기 C언어코딩

0

24

1

정보처리기사 262 실기 Hash(해시) 질문

0

37

2

static 변수 질문입니다.

0

32

2

파이썬 4강 질문입니다.

0

42

2

41강 30:10

0

46

2

이론 공부법 질문 있습니다.

0

68

2

부모의 생성자 관련 질문

0

45

2

시험지 문제에 필기해도 되나요?

0

55

3

41강 11:23

0

43

2

4강파이썬 질문입니다

0

40

2

try-catch 핸들러명

0

51

2

36강 3:48

0

55

2

35강 18:27

0

52

2

자식 코드 내 super() 생략

0

50

2

출력질문

0

66

2

31강 4:06

0

57

2

파이썬 학습자료가 강의 자료와 다릅니다.

0

81

3

섹션 2 - 9강 강의자료 다운로드 문제

0

65

3

29강 3:09

0

50

2

28강 6:42

0

55

2