자료구조 C 실습 · 스택과 큐 · Q6
스택·큐 Q6. 특정 값이 나올 때까지 스택 제거하기
C 파일 하나를 문제 하나로 보고 정리한 풀이 글이다.
이번 글은 함수가 실제로 어떤 연결, 순회, 변환을 수행하는지에 초점을 맞춘다.
이번 글은 함수가 실제로 어떤 연결, 순회, 변환을 수행하는지에 초점을 맞춘다.
Section C Stack and Queue removeUntil
스택 top에서 시작해 지정한 값이 나올 때까지 계속 pop하는 문제다. 조건 자체는 단순하지만, 스택이 비었는데도 계속 찾는 상황을 막아야 한다. 자료구조 문제에서 종료 조건은 로직만큼 중요하다.
한눈에 보는 문제 정보
원본 파일:
C:\Users\cedis\OneDrive\문서\ANTIWORK\WEKK6~~~~~\data_structures_docker\Data-Structures\Stack_and_Queue\Q6_C_SQ.c대상 함수:
removeUntil카테고리: 스택과 큐
문제에서 요구한 것
메뉴와 출력 문자열을 보면 이 파일은 특정 자료구조 연산 하나를 직접 구현하도록 만든 실습 문제다. 입력 흐름은 아래처럼 정리할 수 있다.
- 1: Insert an integer into the stack
- 3: Remove values until the given value
- 0: Quit
- Input an integer that you want to insert into the stack
- The resulting stack is
- Enter an integer value in stack to remove values until that value
핵심 구현 흐름
STEP 1
스택이 비지 않았고 top이 목표값이 아닐 때만 반복한다.
STEP 2
조건이 맞는 동안 계속 pop해 위쪽 값들을 제거한다.
STEP 3
목표값을 만나거나 스택이 비면 종료한다.
핵심 코드
문제 파일 전체를 다 옮기기보다, 실제로 구현해야 했던 함수만 뽑아서 보면 로직이 더 선명하게 들어온다.
핵심 코드:
removeUntilvoid removeUntil(Stack *s, int value)
{
while(!isEmptyStack(s) && peek(s) != value )
{
pop(s);
}
}
구현할 때 체크할 점
- 찾는 값이 스택에 없을 수 있다는 점을 반드시 고려해야 한다.
- `peek`를 호출하기 전에 empty 검사를 먼저 해야 안전하다.
마무리
이 문제는 거대한 알고리즘을 묻는 문제라기보다, 자료구조를 실제 포인터 연결과 순회 흐름으로 이해하고 있는지 확인하는 실습에 가깝다. 조건 자체는 단순하지만, 스택이 비었는데도 계속 찾는 상황을 막아야 한다. 자료구조 문제에서 종료 조건은 로직만큼 중요하다.
같은 카테고리의 다른 문제와 함께 보면, 연결 리스트에서는 재배선, 스택과 큐에서는 순서 제어, 트리에서는 재귀 순회라는 감각이 반복해서 나온다는 점도 같이 볼 수 있다.
'크래프톤 정글 > 정글에서 문제풀기' 카테고리의 다른 글
| 이진 트리 Q1. 두 트리가 같은 구조인지 확인하기 (0) | 2026.04.09 |
|---|---|
| 스택·큐 Q7. 괄호 균형 검사하기 (0) | 2026.04.09 |
| 스택·큐 Q5. 재귀로 큐 뒤집기 (0) | 2026.04.09 |
| 스택·큐 Q4. 스택을 이용해 큐 뒤집기 (0) | 2026.04.09 |
| 스택·큐 Q3. 스택 원소가 쌍별 연속인지 확인하기 (0) | 2026.04.09 |