본문으로 건너뛰기
자료구조 · 알고리즘 기초집LESSON 06

스택: 실행 취소와 괄호 검증 문제

난이도초급 → 중급 입문
예상 시간40분
선수지식이전 강의

06강. 스택: 실행 취소와 괄호 검증 문제

1. 이번 강의에서 해결할 문제​

가장 최근에 적용한 점수 변경부터 되돌리거나 가장 안쪽 괄호부터 맞추려면 입력 순서와 반대 순서로 처리해야 합니다.

2. 학습 목표​

3. 핵심 개념​

스택은 마지막에 들어온 값이 먼저 나오는 LIFO 구조입니다. Java의 오래된 Stack 클래스보다 Deque 계약과 ArrayDeque 구현을 사용하면 앞쪽에서 push, pop, peek를 표현할 수 있습니다. 실행 취소 기록, 함수 호출, 괄호 짝 검사에 적합합니다.

4. 단계별 실습​

1. 예제 파일 작성​

실행 환경: 코드 편집기

실행 위치: C:\dev\game-ranking-algorithms

실행 전 확인: 같은 이름의 파일이 있다면 덮어쓰기 전에 Git diff로 변경 범위를 확인합니다. 선택한 LTS JDK의 java -version과 javac -version이 모두 실행되어야 합니다.

대상 파일: src/StackValidator.java

src/StackValidator.java
import java.util.ArrayDeque;
import java.util.Deque;

public class StackValidator {
static boolean isBalanced(String text) {
Deque<Character> stack = new ArrayDeque<>();
for (char ch : text.toCharArray()) {
if (ch == '(' || ch == '[' || ch == '{') stack.push(ch);
else if (ch == ')' || ch == ']' || ch == '}') {
if (stack.isEmpty()) return false;
char open = stack.pop();
if ((open == '(' && ch != ')') || (open == '[' && ch != ']')
|| (open == '{' && ch != '}')) return false;
}
}
return stack.isEmpty();
}

public static void main(String[] args) {
System.out.println(isBalanced("stage[2](score{1200})"));
System.out.println(isBalanced("stage[(])"));
}
}

2. PowerShell에서 컴파일·실행​

실행 환경: Windows PowerShell

실행 위치: C:\dev\game-ranking-algorithms

실행 전 확인: src/StackValidator.java가 저장되었고 out 폴더에는 삭제해도 되는 컴파일 결과만 있는지 확인합니다.

대상: src/StackValidator.java와 out 아래 생성되는 class 파일

Windows PowerShell
Set-Location C:\dev\game-ranking-algorithms
New-Item -ItemType Directory -Force .\out | Out-Null
javac -Xlint:all -d .\out .\src\StackValidator.java
java -cp .\out StackValidator

예상 결과: 올바른 식은 true, 순서가 어긋난 식은 false가 출력됩니다.

실행 시간은 PC의 CPU·메모리, JDK 버전, JVM 워밍업, 백그라운드 작업과 입력 분포에 따라 달라질 수 있습니다. 측정값은 같은 조건에서 여러 번 비교하고 Big-O 분석과 함께 해석합니다.

5. 코드와 알고리즘이 동작하는 이유​

여는 괄호를 스택에 쌓고 닫는 괄호가 나오면 가장 최근 괄호와 비교합니다. 각 문자를 한 번 처리해 O(n) 시간이며 모두 여는 괄호인 경우 O(n) 추가 공간을 사용합니다. 불일치를 발견하면 즉시 끝나는 최선은 O(1)입니다.

6. 자주 하는 실수와 해결법​

7. 직접 실습​

8. 이해 점검 질문 3개​

9. 핵심 요약​

MINI QUIZ

스택: 실행 취소와 괄호 검증 문제 미니 퀴즈

선택 즉시 정답과 해설을 확인할 수 있습니다. 결과는 이 브라우저에만 저장됩니다.

0 / 2
  1. 문제 1“스택: 실행 취소와 괄호 검증 문제” 실습을 안전하게 진행하기 위한 판단으로 가장 알맞은 것은 무엇인가요?
  2. 문제 2‘빈 스택에서 pop 호출하기’ 실수를 판단할 때 “스택: 실행 취소와 괄호 검증 문제” 강의가 제시한 기준은 무엇인가요?
LESSON STATUS

학습을 마쳤나요?

직접 실습과 점검 질문까지 확인한 뒤 완료로 표시하세요.

06강. 스택: 실행 취소와 괄호 검증 문제 미완료 상태