학습 본문으로 건너뛰기
VAIRODE
stack·queue·deque4번째 작은 수업
오늘은 질문 하나만 해결해요4 / 72

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

empty·underflow 계약

오늘의 질문

empty에서 inspect/remove가 exception, sentinel/optional, block 중 무엇을 수행하는지 API와 mode별로 명시한다. 이를 생략하면 empty를 정상 값 null·None·0과 구별하지 못하거나 blocking call을 즉시 반환한다고 가정한다.에서도 예제 순서는 맞을 수 있지만 경계·부하·동시성에서 반증 가능한 discipline 결정은 남길 수 없습니다.

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

01 · 가볍게 시작하기

정답을 보기 전에 먼저 골라볼까요?

눈으로만 보고 답 하나를 떠올려 보세요parser stack·worker queue·service boundary의 축소된 합성 operation stream에서 empty·underflow 계약 판단을 수행한다.sq04 · empty/singleton/full/wrap fixtures · fixed operation stream · bounded scale
  1. 1
    먼저 골라보기

    틀려도 괜찮아요. 지금 생각한 답 하나를 정해요.

  2. 2
    그림으로 확인하기

    움직이는 순서와 달라지는 곳만 천천히 찾아요.

  3. 3
    내 말로 다시 말하기

    한 문장으로 말해 보면 내가 이해한 곳을 확인할 수 있어요.

02 · 그림으로 보기

그림이 움직이는 순서를 직접 확인해요

empty·underflow 계약의 관찰·추론·검증 지도empty·underflow 계약에서 operation 순서와 endpoint를 추적해 boundary result와 source-level claim을 판정하는 설명도01관찰3개 핵심 용어02추론4개 작동 규칙03검증4개 통과 기준SVG 설명 · empty·underflow 계약의 logical discipline·endpoint·physical state·boundary·claim 판정을 한 흐름으로 분리한다.결과가 기준을 통과하지 못하면 관찰로 돌아가 최소 반례를 다시 수집합니다.
  1. 01관찰underflow · empty result · blocking remove
  2. 02추론empty에서 inspect/remove가 exception, sentinel/optional, block 중 무엇을 수행하는지 API와 mode별로 명시한다. empty·underflow 계약의 correctness는 logical removal order와 endpoint pre/post-state를 먼저 고정한 뒤 비용·capacity·failure policy를 연결한다. empty operation별 value·exception·optional·block 결과표는 empty를 정상 값 null·None·0과 구별하지 못하거나 blocking call을 즉시 반환한다고 가정한다.를 포함하고 ADT·library·implementation·measurement 근거를 서로 다른 열에 남긴다. parser stack·worker queue·service boundary로 전이할 때 boundedness·blocking·fairness·compound atomicity를 새로 감사한다.
  3. 03검증empty·underflow 계약의 허용 operation, endpoint, 반환·failure 계약을 AI 없이 먼저 고정한다. empty를 정상 값 null·None·0과 구별하지 못하거나 blocking call을 즉시 반환한다고 가정한다.를 empty·singleton·full·wraparound 중 해당하는 최소 반례로 재현한다. logical order와 physical state, worst·amortized·blocked/observed 비용을 구분해 여섯 API의 empty 결과를 fail-fast·nullable·blocking 계약으로 분류한다.을 완성한다. empty operation별 value·exception·optional·block 결과표와 사람의 accept·revise·reject 판정 및 보장하지 않는 범위를 제출한다.
empty·underflow 계약의 logical discipline·endpoint·physical state·boundary·claim 판정을 한 흐름으로 분리한다.empty에서 inspect/remove가 exception, sentinel/optional, block 중 무엇을 수행하는지 API와 mode별로 명시한다. → 여섯 API의 empty 결과를 fail-fast·nullable·blocking 계약으로 분류한다. → empty operation별 value·exception·optional·block 결과표; failure probe: empty를 정상 값 null·None·0과 구별하지 못하거나 blocking call을 즉시 반환한다고 가정한다.현재 화면: 정적 요약 지도 · 읽는 방법: operation order·capacity·empty policy 중 하나를 바꾸면 logical sequence·endpoint·result 카드가 어떻게 달라지는지 비교한다. · 모션 축소 설계: 자동 이동과 큰 변형 없이 선택 상태·선 굵기·텍스트·표로 같은 정보를 즉시 표시한다.

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

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

그림에서 찾을 쉬운 규칙

  1. 01empty에서 inspect/remove가 exception, sentinel/optional, block 중 무엇을 수행하는지 API와 mode별로 명시한다.
  2. 02empty·underflow 계약의 correctness는 logical removal order와 endpoint pre/post-state를 먼저 고정한 뒤 비용·capacity·failure policy를 연결한다.
  3. 03empty operation별 value·exception·optional·block 결과표는 empty를 정상 값 null·None·0과 구별하지 못하거나 blocking call을 즉시 반환한다고 가정한다.를 포함하고 ADT·library·implementation·measurement 근거를 서로 다른 열에 남긴다.
  4. 04parser stack·worker queue·service boundary로 전이할 때 boundedness·blocking·fairness·compound atomicity를 새로 감사한다.

03 · 같이 풀어보기

한 단계씩 따라가면 어렵지 않아요

parser stack·worker queue·service boundary의 축소된 합성 operation stream에서 empty·underflow 계약 판단을 수행한다.

함께 볼 작은 예시sq04 · empty/singleton/full/wrap fixtures · fixed operation stream · bounded scale
내 말로 8자 이상 적어요 · 0 / 240

04 · 이제 내가 해볼 차례

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

여섯 API의 empty 결과를 fail-fast·nullable·blocking 계약으로 분류한다.을 수행하고 empty operation별 value·exception·optional·block 결과표로 순서·상태·failure 계약을 독립 검증한다.

  • empty·underflow 계약의 허용 operation, endpoint, 반환·failure 계약을 AI 없이 먼저 고정한다.
  • empty를 정상 값 null·None·0과 구별하지 못하거나 blocking call을 즉시 반환한다고 가정한다.를 empty·singleton·full·wraparound 중 해당하는 최소 반례로 재현한다.
  • logical order와 physical state, worst·amortized·blocked/observed 비용을 구분해 여섯 API의 empty 결과를 fail-fast·nullable·blocking 계약으로 분류한다.을 완성한다.
  • empty operation별 value·exception·optional·block 결과표와 사람의 accept·revise·reject 판정 및 보장하지 않는 범위를 제출한다.

05 · 자주 헷갈리는 지점

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

01empty·underflow 계약에서는 타입 이름이 stack·queue·deque 중 하나이면 operation discipline도 자동으로 보장된다.

한 번 더 생각해 볼 질문parser stack·worker queue·service boundary에서 같은 container를 서로 다른 discipline으로 쓰는 두 operation mapping을 제시하세요.

이렇게 고쳐 생각해요empty에서 inspect/remove가 exception, sentinel/optional, block 중 무엇을 수행하는지 API와 mode별로 명시한다.을 API operation과 endpoint로 봉인하고 underflow의 실제 반환·failure 계약을 확인해야 한다.

02empty result 한 번이 상수 시간이면 empty·underflow 계약 전체 workflow도 항상 상수 비용이다.

한 번 더 생각해 볼 질문empty를 정상 값 null·None·0과 구별하지 못하거나 blocking call을 즉시 반환한다고 가정한다.에서 빠진 선행 또는 후속 비용을 하나 이상 찾으세요.

이렇게 고쳐 생각해요empty operation별 value·exception·optional·block 결과표에 initialization·scan·eviction·wrap·blocking·duplicate insertion과 반복 횟수를 포함해야 총비용이 된다.

03AI가 만든 코드와 trace가 일치하면 empty·underflow 계약의 경계·동시성·언어 계약도 독립 검증된다.

한 번 더 생각해 볼 질문empty를 정상 값 null·None·0과 구별하지 못하거나 blocking call을 즉시 반환한다고 가정한다.를 드러내는 미공개 operation stream과 사람이 확인할 oracle을 쓰세요.

이렇게 고쳐 생각해요같은 생성 가정을 공유한 trace는 oracle이 아니며 blocking remove 경계와 공식 source-level claim을 별도로 검증해야 한다.

06 · 더 궁금할 때만 보기

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

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

deque의 양끝 append/pop, approximately O(1) end operations, bounded maxlen discard, rotate·extendleft와 end/middle indexed-access 차이. thread-safe end operation 문구를 compound atomicity·fairness·multi-step protocol 보장으로 확대하지 않고 정확한 내부 block layout·성장률도 주장하지 않는다.

Python Software Foundation · 공개 문서를 확인했어요queue · A synchronized queue class

Queue·LifoQueue·PriorityQueue·SimpleQueue의 order, locking, maxsize, blocking·timeout, Empty·Full·ShutDown, task tracking과 approximate qsize 경계. FIFO가 global fairness·completion order를 보장한다거나 CPython SimpleQueue 구현 세부를 모든 Python runtime에 일반화하지 않는다.

Oracle · 공개 문서를 확인했어요ArrayDeque · Java SE 26 & JDK 26

Deque method semantics와 ArrayDeque의 growable resizable-array implementation, null 금지, documented amortized/linear operation, external synchronization과 fail-fast best-effort 경계. likely-faster 문구를 보편 성능 보장으로, fail-fast를 correctness·thread safety로 확대하지 않는다.

The Rust Project Developers · 2026년 7월 28일에 확인했어요VecDeque in std::collections

VecDeque의 growable ring buffer, 양끝 operation, capacity, logical indexing, as_slices와 make_contiguous 계약. 내부 field order·ABI·성장 배수·항상 한 구간인 storage·compound atomicity·runtime 성능을 보장하지 않는다.