학습 본문으로 건너뛰기
오늘은 질문 하나만 해결해요33 / 72

처음이어도 괜찮아요 · 그림부터 시작해요

가장 큰 카드를 끝으로 보내기

오늘은 이것 하나만

부모 카드가 자식 카드보다 앞선다는 약속을 지키며 가장 큰 카드를 하나씩 끝자리로 보낼 수 있어요.

먼저 떠올릴 생활 장면가장 큰 책을 맨 위에서 꺼내 책꽂이 끝에 놓고, 남은 책더미를 다시 고르는 것과 같아요.
  1. 1짧은 이야기 읽기
  2. 2내 생각 하나 고르기
  3. 3네 걸음 같이 보기
  4. 4내 말로 한 줄 적기
오늘의 작은 이야기
먼저 이 장면만 천천히 읽어요

가장 큰 카드를 꺼낸 뒤 무엇을 먼저 다시 확인할까요?

정답을 몰라도 괜찮아요. 지금 생각과 가장 가까운 것을 골라요.

02 · 낯선 말부터 풀기

정확한 이름보다 먼저 쉬운 뜻을 읽어요

처음 보는 말도 책 읽듯 풀어봐요

이 수업은 쉬운 뜻과 생활 예를 아직 함께 준비하지 못했어요. 설명 없는 정확한 이름은 먼저 보여 주지 않을게요.

그림에서 찾을 쉬운 규칙

  1. 01부모와 두 자식의 위치를 선으로 연결해요.
  2. 02꼭대기 카드와 정렬 줄 끝의 카드를 바꿔요.
  3. 03남은 구간에서 앞뒤 약속이 처음 깨진 부모를 표시해요.
  4. 04더 알맞은 자식과 바꾸며 약속이 다시 맞을 때까지 따라가요.

03 · 그림으로 보기

카드가 움직이고 찾을 범위가 줄어드는 모습을 따라가요

가장 큰 카드를 끝으로 보내기를 보고, 따라 하고, 다시 해보는 그림가장 큰 카드를 끝으로 보내는 heap sort에서 원래 index와 key, comparison·write·partition 또는 left·mid·right 경계를 추적하는 설명도01오늘의 장면memory 제한정렬·worst-casebound·priority str…02첫 걸음부모와 두 자식의 위치를 선으로연결해요.03결과 열기내 답을 먼저 적은 뒤 결과를 열어봐요.직접 살펴보는 그림 · 가장 큰 카드를 끝으로 보내는 heap sort의 order/query contract·comparison 또는 predicate·partition/boundary·cost·claim 판정을 한 흐름으로 분리한다.처음 생각과 달라도 괜찮아요. 달라진 첫 단계만 다시 봐요.
  1. 01오늘의 장면memory 제한 정렬·worst-case bound·priority structure 연결를 여덟 장 카드와 두 개 query로 줄여 가장 큰 카드를 끝으로 보내는 heap sort 판단을 수행한다.
  2. 02첫 걸음부모와 두 자식의 위치를 선으로 연결해요.
  3. 03결과 열기내 답을 먼저 적은 뒤 결과를 열어 봐요.
가장 큰 카드를 끝으로 보내는 heap sort의 order/query contract·comparison 또는 predicate·partition/boundary·cost·claim 판정을 한 흐름으로 분리한다.내 생각을 먼저 남기면 결과와 쉬운 설명을 차례로 열 수 있어요.현재 화면: 그림 요약 · 그림을 보는 방법: key·tie·input order·query·boundary 중 하나를 바꾸면 comparison·write·candidate interval·result가 어떻게 달라지는지 비교한다. · 움직임 없이 보기: 자동 이동과 큰 변형 없이 선택 상태·선 굵기·pattern·텍스트·표로 같은 정보를 즉시 표시한다.

04 · 책처럼 천천히 되짚기

방금 한 일을 한 줄씩 다시 읽어요

memory 제한 정렬·worst-case bound·priority structure 연결를 여덟 장 카드와 두 개 query로 줄여 가장 큰 카드를 끝으로 보내는 heap sort 판단을 수행한다.

이 장면에서 주어진 것ss33 · 8-record public fixture · duplicate tie · deterministic key/query order
내 말로 8자 이상 적어요 · 0 / 240

05 · 이제 내가 해볼 차례

여기까지 오면 이런 일을 할 수 있어요

부모 카드가 자식 카드보다 앞선다는 약속을 지키며 가장 큰 카드를 하나씩 끝자리로 보낼 수 있어요.

  • 부모와 두 자식의 위치를 선으로 연결해요.
  • 꼭대기 카드와 정렬 줄 끝의 카드를 바꿔요.
  • 남은 구간에서 앞뒤 약속이 처음 깨진 부모를 표시해요.
  • 더 알맞은 자식과 바꾸며 약속이 다시 맞을 때까지 따라가요.
오늘 해낼 일과 다 했다고 볼 기준 보기쉬운 순서를 익힌 뒤 더 정확히 확인하고 싶을 때 열어요.

7원소 max-heap에서 두 번 extract하고 heap/suffix 경계를 표시한다.을 수행하고 heap region·sorted suffix·sift comparisons·swap ledger로 order/query contract·invariant·cost·claim level을 독립 검증한다.

  • 가장 큰 카드를 끝으로 보내는 heap sort의 input·output·key/comparator·tie·duplicate·mutation 계약을 AI 없이 먼저 고정한다.
  • physical array tail과 logical heap size를 섞어 확정 suffix를 다시 heap에 넣는다.를 empty·singleton·all-equal·already-sorted·reverse·adversarial 중 해당하는 최소 반례로 재현한다.
  • correctness와 comparison·write·space·preprocessing/query cost, library 문서와 측정 관찰을 서로 구분한다.
  • heap region·sorted suffix·sift comparisons·swap ledger와 사람의 accept·revise·reject 판정 및 보장하지 않는 범위를 제출한다.

06 · 자주 헷갈리는 지점

틀린 답도 이유를 알면 다음에는 맞힐 수 있어요

처음부터 모두 맞힐 필요는 없어요.괜찮아요. 처음 어긋난 한 단계만 찾아요. 완성된 줄을 지우지 말고 꼭대기에서 처음 약속이 깨진 부모·자식 세 장만 다시 봐요.

헷갈리기 쉬운 이유 세 가지 보기내가 어디에서 다르게 생각했는지 찾고 싶을 때 열어요.
01가장 큰 카드를 끝으로 보내는 heap sort에서 작은 예제의 최종 순서나 위치가 맞으면 기준·동률·중복·mutation 계약도 자동으로 맞다.

한 번 더 생각해 볼 질문memory 제한 정렬·worst-case bound·priority structure 연결에서 같은 최종 값처럼 보이지만 안정성이나 위치 답이 달라지는 두 계약을 만드세요.

이렇게 고쳐 생각해요M05 heap invariant로 maximum을 꺼내 suffix에 놓고 heap size를 줄여 in-place comparison sort를 구성한다.처럼 정답 전에 input·order·query contract와 observable result를 봉인해야 한다.

02logical heap size 한 번이 빠르면 모든 input order·key range·query count에서 같은 방법이 최선이다.

한 번 더 생각해 볼 질문physical array tail과 logical heap size를 섞어 확정 suffix를 다시 heap에 넣는다.를 드러내며 선택이 뒤집히는 최소 input family를 제시하세요.

이렇게 고쳐 생각해요heap region·sorted suffix·sift comparisons·swap ledger에 worst case, preprocessing, comparison/write/space와 관찰값을 분리해야 한다.

03AI 구현과 AI가 만든 expected trace가 일치하면 가장 큰 카드를 끝으로 보내는 heap sort의 correctness와 성능이 독립 검증된다.

한 번 더 생각해 볼 질문physical array tail과 logical heap size를 섞어 확정 suffix를 다시 heap에 넣는다.를 드러내는 AI-off fixture와 사람이 계산할 expected result를 쓰세요.

이렇게 고쳐 생각해요같은 가정을 공유한 두 결과는 독립 oracle이 아니며 손계산 trace·brute force·metamorphic relation·공식 계약 중 별도 근거가 필요하다.

07 · 더 궁금할 때만 보기

선생님과 검토자를 위한 믿을 만한 원문

원문과 어디까지 참고했는지 펼쳐 보기처음 배우는 동안에는 열지 않아도 괜찮아요.
Python Software Foundation · 공개 문서를 확인했어요Python Software Foundation의 공식 원문 보기

이 수업의 설명이 공식 규칙과 맞는지 선생님과 검토자가 다시 확인할 때 쓰는 원문이에요.

Oracle · 공개 문서를 확인했어요Oracle의 공식 원문 보기

이 수업의 설명이 공식 규칙과 맞는지 선생님과 검토자가 다시 확인할 때 쓰는 원문이에요.

The Rust Project Developers · 공개 문서를 확인했어요The Rust Project Developers의 공식 원문 보기

이 수업의 설명이 공식 규칙과 맞는지 선생님과 검토자가 다시 확인할 때 쓰는 원문이에요.

ACM, IEEE Computer Society, and AAAI · 2026년 7월 28일에 확인했어요ACM, IEEE Computer Society, and AAAI의 공식 원문 보기

이 수업의 설명이 공식 규칙과 맞는지 선생님과 검토자가 다시 확인할 때 쓰는 원문이에요.

International Olympiad in Informatics · 2026년 7월 28일에 확인했어요International Olympiad in Informatics의 공식 원문 보기

이 수업의 설명이 공식 규칙과 맞는지 선생님과 검토자가 다시 확인할 때 쓰는 원문이에요.

Massachusetts Institute of Technology OpenCourseWare · 2026년 7월 28일에 확인했어요Massachusetts Institute of Technology OpenCourseWare의 공식 원문 보기

이 수업의 설명이 공식 규칙과 맞는지 선생님과 검토자가 다시 확인할 때 쓰는 원문이에요.

Princeton University Algorithms, 4th Edition · 2026년 7월 28일에 확인했어요Princeton University Algorithms, 4th Edition의 공식 원문 보기

이 수업의 설명이 공식 규칙과 맞는지 선생님과 검토자가 다시 확인할 때 쓰는 원문이에요.

National University of Singapore VisuAlgo · 2026년 7월 28일에 확인했어요National University of Singapore VisuAlgo의 공식 원문 보기

이 수업의 설명이 공식 규칙과 맞는지 선생님과 검토자가 다시 확인할 때 쓰는 원문이에요.

OpenDSA Project and Virginia Tech · 2026년 7월 28일에 확인했어요OpenDSA Project and Virginia Tech의 공식 원문 보기

이 수업의 설명이 공식 규칙과 맞는지 선생님과 검토자가 다시 확인할 때 쓰는 원문이에요.