학습 본문으로 건너뛰기
VAIRODE
배열과 list64번째 작은 수업
오늘은 질문 하나만 해결해요64 / 72

도움 없이 한 번 더 풀어보기

Gold 64상태 sequence 변이 관측소

오늘의 질문

workload 4개, 추상 표현 4개, scale 4개의 64상태에서 invariant·총비용·observer validity를 비교하되 추상 표현을 언어 타입이나 성능 보장으로 등치하지 않는다. 이를 생략하면 64상태의 fixed/growable/linked/view 축을 모든 언어에 직접 매핑하고 N/A·copy·backed·borrow 차이를 지운다.에서도 이름과 평균적 인상만으로 그럴듯한 선택을 만들 수 있지만, 반증 가능한 sequence 결정은 남길 수 없습니다.

아직 답을 몰라도 괜찮아요. 아래 작은 예시를 보고 먼저 예상해 보세요.

01 · 혼자 확인해요

연습한 문제를 다시 풀며 혼자 확인하기

지금은 방금 연습한 문제를 다시 보는 시간이에요.아직 “완전히 익혔다”고 기록하지 않아요. 나중에 모양이 다른 문제도 도움 없이 풀면 그때 다시 확인할 수 있어요.

답과 과정 확인
80% 이상
내 말로 설명
80% 이상
막힌 곳 고치기
80% 이상
다른 문제에 써보기
80% 이상
스스로 확인하며 작성 중인 답0 / 4
  1. 01

    먼저 생각하기 · 기초

    al64 predict · Gold 64상태 sequence 변이 관측소: “64상태의 fixed/growable/linked/view 축을 모든 언어에 직접 매핑하고 N/A·copy·backed·borrow 차이를 지운다.” 조건에서 상태·비용·observer 유효성을 실행 전에 봉인한다.

    상황

    언어 library와 분리된 toy dynamic array D를 예측한다. D는 size 0, capacity 2, epoch 0에서 시작하며 A부터 G까지 일곱 값을 차례로 append한다.

    문제

    각 append 뒤 size·capacity·누적 reallocation copy 수·epoch을 표로 예측하세요. 한 append의 worst cost와 일곱 append의 amortized 결론을 분리하고, resize 전에 얻은 handle의 상태도 판정하세요.

    제공 자료
    • append 직전 size=capacity이면 capacity를 정확히 두 배로 늘리고 기존 size개 원소를 새 storage로 복사한 뒤 새 값을 쓴다.
    • reallocation copy 수는 기존 원소 복사만 센다. 새 값 일곱 개를 쓰는 비용은 별도다.
    • reallocation 때마다 epoch이 1 증가하며 이전 epoch의 모든 storage handle은 stale이 된다.
    • capacity가 남아 있는 append는 size만 1 증가시키고 copy 수와 epoch을 바꾸지 않는다.
    • toy contract의 결과를 Python list, Java ArrayList, C++ vector의 정확한 growth factor로 일반화하지 않는다.

    연습과 같은 문제를 다시 풀어 보는 시간이에요. 힌트 없이 먼저 생각해 보세요. 지금 적은 답은 바로 합격으로 기록되지 않아요.

    움직임과 비교
  2. 02

    내 말로 설명하기 · 익힌 것을 써보기

    al64 explain · Gold 64상태 sequence 변이 관측소: workload 4개, 추상 표현 4개, scale 4개의 64상태에서 invariant·총비용·observer validity를 비교하되 추상 표현을 언어 타입이나 성능 보장으로 등치하지 않는다.이 필요한 이유와 64셀 state matrix·mutation traces·claim-level source ledger·accept/revise/reject memo만으로는 보장할 수 없는 범위를 설명한다.

    상황

    C++ sequence profile을 검토한다. vector v는 size=4, capacity=4이고 iterator i는 index 1, reference r은 index 0 원소를 가리킨다. 먼저 v.push_back(50)을 수행한다. 다음 독립 장면에서는 size=5, capacity=8인 vector의 index 1에 insert하며 iterator j는 기존 index 3을 가리킨다.

    문제

    두 장면에서 i·r·j의 유효성을 설명하고, 같은 위치 편집을 std::list로 수행할 때의 차이와 연속 저장의 locality caveat를 적으세요. 마지막으로 이 설명을 Python list 순회 규칙으로 그대로 옮기면 안 되는 이유를 쓰세요.

    제공 자료
    • 이 C++ profile에서 vector reallocation은 그 vector 원소를 가리키는 모든 iterator·reference·pointer를 invalid하게 만든다.
    • reallocation 없는 vector insert는 insertion point보다 앞의 iterator/reference는 유지하지만 insertion point와 그 뒤, 기존 end를 invalid하게 만든다.
    • 이 C++ profile에서 std::list insert는 기존 element iterator/reference를 invalid하게 만들지 않고 erase는 지운 element의 것만 invalid하게 만든다.
    • 연속 저장은 순차 접근의 locality에 유리할 가능성이 있고 linked nodes는 pointer traversal이 필요하지만, wall-clock 우위는 측정 전 확정하지 않는다.
    • 이 과제의 Python profile은 구조 변경 중 list iteration 결과에 의존하지 않는다고 계약한다. C++ iterator invalidation 표를 Python에 그대로 대입하지 않는다.

    연습과 같은 문제를 다시 풀어 보는 시간이에요. 힌트 없이 먼저 생각해 보세요. 지금 적은 답은 바로 합격으로 기록되지 않아요.

    설명 기준과 비교
  3. 03

    틀린 곳 고치기 · 익힌 것을 써보기

    al64 debug · Gold 64상태 sequence 변이 관측소: AI가 만든 분석에 “64상태의 fixed/growable/linked/view 축을 모든 언어에 직접 매핑하고 N/A·copy·backed·borrow 차이를 지운다.”를 주입하고 최초 잘못된 가정만 수정한다.

    상황

    AI 초안이 Python 함수 `drop_negative(items)`를 제안했다: `for item in items: if item < 0: items.remove(item); return items`. 설명은 모든 음수를 제거하고 새 list를 반환하며 O(n)이고 C++ vector로 줄 단위 번역해도 같다고 주장한다.

    문제

    초안의 correctness·mutation/alias·complexity·언어 전이 주장을 각각 audit하세요. 실행 전에 최소 반례를 쓰고, non-mutating Python 수정안과 in-place 수정안을 각각 제시한 뒤 계약과 비용을 비교하세요.

    제공 자료
    • Python profile에서 list.remove(value)는 첫 일치 원소를 지우고 뒤 원소를 왼쪽으로 이동시키며 같은 list object를 바꾼다.
    • 이 profile의 for loop가 다음 index로 진행하는 동안 현재 list에서 원소를 지우면 인접한 원소가 검사되지 않을 수 있다.
    • remove의 search와 shift는 list 길이에 비례할 수 있어 loop 안에서 반복하면 worst O(n²)가 된다.
    • non-mutating 수정안은 `[item for item in items if item >= 0]`이며 새 outer list를 만든다.
    • C++ vector erase는 erased point 이후 iterator를 invalid하게 할 수 있으므로 Python loop behavior를 동일하다고 간주하지 않는다.

    연습과 같은 문제를 다시 풀어 보는 시간이에요. 힌트 없이 먼저 생각해 보세요. 지금 적은 답은 바로 합격으로 기록되지 않아요.

    답과 설명 함께 비교
  4. 04

    새 문제에 써보기 · 새 문제

    al64 transfer · Gold 64상태 sequence 변이 관측소: 교차 언어 sequence architecture shiproom·AI 생성 선택 감사로 판단을 옮겨 보존할 sequence semantics와 달라지는 비용·수명 규칙을 방어한다.

    상황

    오프라인 annotation timeline의 sequence layer를 설계한다. 최대 200,000 records, insertion order와 duplicate text 보존, append 90%, indexed page/scan 9%, stable logical ID에 의한 delete 1%다. 원소의 물리 주소 안정성은 요구하지 않으며 memory budget은 64 MiB다.

    문제

    AI 도구를 끈 상태에서 먼저 계약·후보·네 가지 boundary test·초기 선택을 기록하세요. 그 뒤 AI가 제안한 singly linked list와 dynamic array+tombstone 두 안을 같은 evidence로 audit하고, 선택·compaction trigger·언어별 구현 주의점·선택이 뒤집히는 조건을 작성하세요.

    제공 자료
    • record는 64-byte modeled payload와 8-byte logical ID를 가진다. tombstone은 record당 1 byte로 모델링하며 container overhead는 별도 보고한다.
    • dynamic array+tombstone은 append와 indexed scan을 연속 logical slots에서 수행하고 delete는 mark만 바꾸며, compaction 때 surviving records를 순서대로 복사한다.
    • tail pointer와 ID→(predecessor,node) lookup을 함께 일관되게 유지하는 singly linked list는 해당 predecessor가 유효할 때 delete와 append가 O(1)이다. ID→node만 있으면 predecessor 탐색이 필요하며 indexed page와 full scan에도 traversal과 node overhead가 든다.
    • 초기 review trigger는 tombstone ratio가 20%를 넘거나 modeled live+tombstone bytes가 64 MiB의 80%를 넘을 때 compaction을 검토하는 것이다. 이 수치는 검증할 정책이지 보편 상수가 아니다.
    • Python list, JavaScript Array, C++ vector는 mutation·copy·handle 규칙이 다르다. stable logical ID를 외부 계약으로 쓰고 physical index·reference는 mutation 뒤 재검증한다.
    • AI-off evidence에는 empty, singleton delete, full modeled load, adjacent tombstones가 포함되어야 하며 결과는 review 상태이지 배포·숙련 인증이 아니다.

    연습과 같은 문제를 다시 풀어 보는 시간이에요. 힌트 없이 먼저 생각해 보세요. 지금 적은 답은 바로 합격으로 기록되지 않아요.

    설명 기준과 비교

4개 답이 남았습니다.

02 · 나중에 한 번 더

모양이 다른 문제에서도 같은 생각을 써봐요

Gold 64상태 sequence 변이 관측소의 미공개 sequence에서 계약·총비용·observer 유효성을 독립 재구성하는 능력의 미공개 empty·singleton·middle·end·alias·reallocation fixture에서 AI 없이 계약·상태·총비용·observer verdict를 작성하고 deterministic replay evidence를 제출한다.

검증 과제

AI가 제안한 Gold 64상태 sequence 변이 관측소 분석에 copy/view 혼동, size/capacity 혼동, locate cost 누락, stale observer, nested alias, exact growth 추측 또는 언어별 N/A 누락 중 하나 이상을 심어 독립 반례와 공식 근거로 찾아 수정한다.