당신은 코딩 테스트 교육 전문가입니다. 아래 문제를 한국 취업 준비생 수준(자료구조 기초 이수, 알고리즘 대회 경험 없음)을 위한 worked example로 작성해주세요.
[문제] (아래에 문제 전문 붙여넣기)
[풀이 작성 지침]
-
풀이 시작 전: 문제 표상 명시 (problem representation)
- 이 문제를 한 문장으로 추상화하세요. "이 문제는 ___ 구조를 유지하면서 ___ 조건이 만족될 때까지 ___ 를 반복하는 문제다" 형식으로.
- 이 추상화가 어떤 자료구조/알고리즘 유형을 암시하는지 설명하고, 왜 다른 유형(예: 정렬, DP 등)은 적합하지 않은지 한 문장씩 기각하세요.
- 이 유형의 문제를 인식하는 신호(signal)를 명시하세요. 예: "'앞에 있는 것이 처리될 때까지 기다린다'는 조건이 보이면 순서 보존 구조를 의심하라."
-
하위 목표 분절 및 표지 (subgoal labeling)
- 풀이를 3~5개의 하위 목표로 나누세요.
- 각 하위 목표 앞에 추상적 레이블을 붙이세요. 레이블은 이 문제에만 해당하는 서술이 아니라, 같은 패턴의 다른 문제에도 재사용 가능한 구조적 표현이어야 합니다. 예: 【하위 목표 2: 각 원소의 '완료 시점'을 정수로 변환한다】 (이 레이블은 진도/속도 문제뿐 아니라 임의의 완료 조건 계산 문제에 적용 가능)
-
각 하위 목표 내 서술 방식 각 하위 목표 안에서 다음 순서로 서술하세요: a) 이 단계에서 해결해야 할 부분 문제가 무엇인지 (1~2문장) b) 그 부분 문제를 해결하는 코드 조각 (Python 또는 문제에 적합한 언어) c) 코드 바로 아래: 왜 이렇게 작성했는지, 다른 방식은 왜 안 되는지 (코드와 설명을 분리하지 말고 코드 직후에 배치할 것) d) 해당 단계를 입출력 예 #1의 구체적인 값으로 손으로 추적한 결과 (추상적 설명만으로는 부족하므로, 실제 값의 흐름을 표나 나열로 보여줄 것)
-
자기설명 유도 지점 각 하위 목표가 끝난 직후, 다음 중 하나의 형식으로 점검 질문을 제시하세요:
- 빈칸 완성형: "입출력 예 #2에서 이 단계를 적용하면 결과는 ___입니다. 직접 계산해보세요."
- 변형 질문형: "만약 배포가 하루에 두 번 가능하다면 이 단계에서 무엇이 바뀌어야 할까요?" 질문은 다음 하위 목표를 보기 전에 학습자가 스스로 처리할 수 있는 난이도여야 합니다.
-
오류 예방 표지 이 문제에서 학습자가 자주 틀리는 지점을 식별하고, 해당 코드 줄 옆에 ⚠ 주의: 형식으로 삽입하세요. (오류를 찾게 하는 것이 아니라, 오류 발생 위치를 명시하고 왜 그 오류가 발생하는지 분석하게 할 것)
-
풀이 마무리: 전이 가교 (transfer bridge)
- 이 풀이에서 사용한 핵심 패턴을 한 문장으로 추출하세요.
- 이 패턴이 적용될 수 있는 다른 문제 유형을 두 가지 제시하세요. (문제 이름이나 번호가 아니라, "~한 조건이 있는 ~유형" 형식으로)
- 이 패턴이 적용되지 않는 유사해 보이는 문제 유형도 한 가지 제시하고, 왜 다른지 설명하세요.
[형식 요건]
- 각 하위 목표는 시각적으로 구분하여 작성하세요 (구분선 또는 헤더 사용).
- 코드는 코드 블록으로, 손 추적 결과는 표 또는 단계별 나열로 표현하세요.
- 완성된 전체 코드는 맨 마지막에 한 번만 제시하세요. (중간에 완성 코드를 먼저 보여주면 학습자가 이해 전에 암기로 넘어가버리는 것을 방지하기 위함입니다.)