← SO25 객관식 전체 목차

Stacks, Queues, verkettete Listen und abstrakte Datentypen

스택, 큐, 연결 리스트, 추상 자료형

중요한 독일어·영어 용어는 유지하되 설명과 학습 동선은 한국어 중심으로 제공합니다.

이 챕터의 문항별 독립 학습 페이지

단원 페이지에는 개요와 학습 순서만 둡니다. 각 문항의 용어·비유·수식·단계별 풀이·실제 채점은 아래 독립 페이지에서 이어집니다.

  1. I-2 · 1개 선택

    스택과 큐에 대한 진술 중 정확히 하나를 고르시오.

    독립 개념 강의와 실제 채점 열기 →
  2. I-3 · 1개 선택

    연결 리스트에 대한 진술 중 정확히 하나를 고르시오.

    독립 개념 강의와 실제 채점 열기 →
  3. II-3 · 2개 선택

    스택과 큐에 대한 진술 중 정확히 두 개를 고르시오.

    독립 개념 강의와 실제 채점 열기 →
  4. II-4 · 2개 선택

    자료구조에 대한 진술 중 정확히 두 개를 고르시오.

    독립 개념 강의와 실제 채점 열기 →

30초 핵심 요약

30초 핵심

스택(Stack)은 LIFO이므로 마지막에 넣은(push) 원소가 먼저 빠진다(pop). 큐(Queue)는 FIFO이므로 먼저 넣은(enqueue) 원소가 먼저 빠진다(dequeue). 단일 연결 리스트(singly linked list)는 보통 next만 있어 뒤로 순회하거나 임의 인덱스에 직접 접근할 수 없다. 추상 자료형(ADT)은 값·연산·행동을 정하는 것이며 구체적 구현(concrete implementation)이나 실행시간 표 자체가 아니다.

핵심 수식·규칙

스택의 push·pop은 보통 \(O(1)\)O(1)이다. 큐의 enqueue·dequeue는 원형 배열 또는 front/rear 연결 리스트 구현에서 보통 \(O(1)\)O(1)이다. 연결 리스트에서 값 탐색·인덱스형 접근은 \(\Theta(n)\)Θ(n)이고, 위치를 이미 알고 있을 때 포인터 갱신으로 하는 삽입·삭제는 \(O(1)\)O(1)이다.

시험에서 알아볼 신호

문장에 beide, jedes, direkt, nur, typischerweise, konkrete Implementierung이 나오면 용어와 숨은 전제를 먼저 표시한다.

시험 연결

복기 원문 시험

2025년 여름학기(SoSe 2025) 복원 객관식의 섹션 I과 II이다.

선택 규칙
I

\(\text{exactly}_{\text{one}}\)exactly(one)

II

\(\text{exactly}_{\text{two}}\)exactly(two)

한국어 시험 유형 설명

이 단원 문제는 계산보다 단어 함정이 중요하다. LIFO·FIFO, 단일·이중 연결, ADT·구현, 그리고 '이미 알고 있는 포인터(known pointer)' 같은 전제어를 먼저 확인해야 한다.

다른 문제로 옮겨 쓰는 목표

정답 문장을 외우는 대신 각 선택지가 ADT 수준의 주장인지 구현 수준의 주장인지 분리해 변형 객관식(altered MC)도 판정하도록 훈련한다.

먼저 알아야 할 용어와 전제

개념 강의

한국어 직관 설명

스택(Stack)은 접시 더미와 같다. 위에 올린 것을 위에서 먼저 꺼낸다. 큐(Queue)는 줄과 같아서 먼저 선 사람이 먼저 나간다. 연결 리스트(linked list)는 배열처럼 칸 번호로 바로 뛰어가는 구조가 아니라, 노드가 다음 노드를 가리키는 길이다. ADT는 '메뉴판'이고 구현(implementation)은 '주방 설비'다.

정의

스택 ADT(Stack ADT)는 new, isEmpty, push, pop을 제공하고 후입선출(LIFO)을 만족한다. 큐 ADT(Queue ADT)는 new, isEmpty, enqueue, dequeue를 제공하고 선입선출(FIFO)을 만족한다. 단일 연결 리스트(singly linked list, einfach verkettete Liste)의 각 원소는 다음 원소를 가리키는 next 포인터를 가지지만 이전 원소를 가리키는 prev 포인터는 없다. 이중 연결 리스트(doubly linked list, doppelt verkettete Liste)는 next와 prev를 모두 가져 앞뒤 순회가 가능하다. 추상 자료형(ADT, abstrakter Datentyp)은 가능한 값과 연산 및 행동을 설명하며, 배열인지 리스트인지 같은 저장 방식은 별도의 구현 문제다.

선수 개념
  • 원소 삽입 순서와 제거 순서를 작은 예시로 추적할 수 있어야 합니다.
  • next 포인터와 prev 포인터의 차이를 알아야 한다.
  • \(O(1)\)O(1)\(\Theta(n)\)Θ(n)의 차이를 '입력 크기에 따라 비용이 변하는가'로 판단할 수 있어야 한다.
불변식과 성질

스택 불변식(Stack invariant)에 따르면 pop은 아직 제거되지 않은 원소 중 가장 최근에 push된 원소를 반환한다. 큐 불변식(Queue invariant)에 따르면 dequeue는 아직 제거되지 않은 원소 중 가장 오래전에 enqueue된 원소를 반환한다. 단일 연결 리스트는 현재 노드에서 next 방향으로 갈 수 있지만 prev 포인터나 보조 정보 없이는 뒤로 갈 수 없다. 같은 큐 ADT도 원형 배열(circular array), 단일 연결 리스트 또는 두 스택(two-stack) 방식 등 여러 구현을 가질 수 있다.

실행시간과 공간 복잡도

강의 03의 실행시간 표에서 스택의 push·pop과 큐의 enqueue·dequeue는 보통 \(\Theta(1)\)Θ(1)이다. 연결 리스트에서 값 탐색은 \(\Theta(n)\)Θ(n)이며 인덱스처럼 임의 위치에 곧바로 접근하는 것은 기본 직접 연산이 아니다. 이미 알고 있는 노드·위치에서 삽입·삭제는 \(\Theta(1)\)Θ(1)일 수 있지만, 값이나 이전 노드를 찾는 데는 \(\Theta(n)\)Θ(n)이 들 수 있다. 단일 연결 노드는 prev가 없으므로 이중 연결 노드보다 포인터 저장 공간이 적다.

주요 경우와 경계 사례

빈 스택이나 큐에서 pop 또는 dequeue를 하면 명세에 따라 언더플로(underflow)나 오류가 발생한다. enqueue(x) 직후 dequeue()가 x를 반환하는 것은 enqueue 전에 큐가 비어 있었을 때뿐이며, 그렇지 않으면 더 오래된 맨 앞 원소가 먼저 나온다. 단일 연결 리스트 끝에 추가하는 비용은 표현 방식에 따라 달라서 tail 포인터가 있으면 \(O(1)\)O(1)이지만 head 포인터만 있으면 순회가 필요할 수 있다. 또한 이미 알고 있는 노드를 삭제하는 것과 값으로 삭제하는 것은 다르며, 값으로 삭제하려면 이전 노드를 찾아야 할 수 있다.

시험에서 주의할 표현
  • beide
  • jedes
  • direkter Zugriff
  • nur dann
  • typischerweise
  • konkrete Implementierung
  • einfach
  • doppelt
  • ohne Entfernen
강의 버전 메모

2026년 강의의 연결 리스트 알고리즘은 주로 이중 연결 리스트 연산을 보여 주지만, Sheet05는 단일 연결 리스트를 명시적으로 묻는다. 단일 연결 리스트에 관한 주장은 해당 연습문제와 공식 풀이를 직접 근거로 삼는다.

직접 해 보는 실험실

Stack·Queue·List 상태 추적기

다음 상태를 먼저 예측한 뒤 한 단계 실행하여 확인하세요.

준비됨

새 문장 판별 체크리스트

능동 회상

구두시험 질문

시험 직전 요약

핵심

스택 = LIFO, 큐 = FIFO. 단일 연결 리스트 = next만, 이중 연결 리스트 = next + prev. ADT는 행동 계약이며 메모리 배치가 아니다.

경계와 복잡도

스택 push·pop은 \(O(1)\)O(1), 전형적인 front/rear 구현의 큐 enqueue·dequeue는 \(O(1)\)O(1), 연결 리스트 탐색·인덱스형 접근은 \(\Theta(n)\)Θ(n), 위치를 안 뒤 포인터 삽입·삭제는 \(O(1)\)O(1)이다.

경계 사례

enqueue(x) 뒤 dequeue()가 x를 반환하는 것은 이전에 큐가 비어 있었을 때뿐이다. tail 포인터가 없으면 단일 연결 리스트 끝에 추가할 때 순회가 필요할 수 있다.

판정 절차

원소 두 개의 추적을 쓰고 node(value,next)를 그린 뒤, 문장이 ADT 수준인지 구현 수준인지 표시한다.

출처

AI 후속 학습 프롬프트

마지막 생성: 2026-08-03 03:24