inflearn logo
강의

Khóa học

Chia sẻ kiến thức

(Mới nhất 2026!) Vượt qua kỳ thi thực hành Kỹ sư xử lý thông tin chỉ trong một tuần

Đề thi thử số 1

모의고사 1회 3번문제

Đã giải quyết

58

yundevil

6 câu hỏi đã được viết

0

강의좀 올려주세여.ㅠㅠ

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

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

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

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

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

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

Câu trả lời 3

0

weekendcode

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


핵심 개념 중 하나인 가변 기본값(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

communityai8509

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

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

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

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

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

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

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

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

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

0

16

1

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

0

19

1

262 정처기 실기 C언어코딩

0

12

0

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

0

22

2

static 변수 질문입니다.

0

23

2

파이썬 4강 질문입니다.

0

28

2

41강 30:10

0

37

2

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

0

60

2

부모의 생성자 관련 질문

0

36

2

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

0

39

3

41강 11:23

0

35

2

4강파이썬 질문입니다

0

31

2

try-catch 핸들러명

0

37

2

36강 3:48

0

51

2

35강 18:27

0

45

2

자식 코드 내 super() 생략

0

49

2

출력질문

0

63

2

31강 4:06

0

51

2

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

0

78

3

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

0

63

3

29강 3:09

0

45

2

28강 6:42

0

52

2

22강 17:33

0

48

2

75강 26년 1회 코드 문제 해석 강의 질문 드립니다.

1

59

2