Notice
Recent Posts
Recent Comments
Link
CodeClover
Stack & Queue 정리 본문
Stack(스택) ?
스택(Stack)은 데이터를 저장하고 관리하는 자료구조 중 하나로, 구멍을 예로 들어 설명이 가능하다. 구멍에 공을 하나씩 넣으면, 나중에 넣은 공이 먼저 빠져나오게 된다.
스택은 이렇게 마지막에 들어간 데이터가 먼저 나오는 LIFO(Last In, First Out) 구조를 가지고 있습니다. 즉, 데이터를 넣는 입구와 꺼내는 출구가 동일한 위치에 있어, 마지막에 넣은 데이터가 가장 먼저 처리되는 방식이다.
[ 메소드 정리 ]
//스택에서 넣는 연산
.push()
//스택에서 빼는 연산
.pop()
//스택이 비어있는 경우 CHECK
.isEmpty()
//스택 제일 상단에 있는것 CHECK
.peek()
[ 이해를 돕기 위한 예시 코드 정리 ]
//스택 객체 생성하기
Stack<사용할문자열> stack = new Stack<>();
//예시코드
for(char x : str.toCharArray()){
if(x=='push연산'){
stack.push(x); //x가 특정값을 만족하면 stack에 값을 넣는 연산
}else{
if(stack.isEmpty()) return "꺼낼값이 없습니다.";
stack.pop(); //스택이 비어있지 않다면 값을 꺼내는 연산
}
}
Queue(큐) ?
터널을 생각하면 스택과는 다른 구조인 큐(Queue)를 이해하는 데 도움이 됩니다.
큐(Queue)는 데이터를 저장하고 처리하는 방법은 터널처럼 작동하여, 데이터가 들어가는 순서와 나오는 순서가 같습니다. 큐는 먼저 들어간 데이터가 먼저 나오는 방식 FIFO(First In, First Out) 구조를 가지고 있습니다. 즉,터널을 통해 공이 들어가면, 가장 먼저 들어간 공이 가장 먼저 나오는 것과 같은 원리입니다.
[ Queue 메소드 정리 ]
//큐에 집어 넣는 연산
.offer()
//큐에서 꺼내는 연산
.poll()
//큐가 비어있는 경우 CHECK
isEmpty()
//큐 제일 앞에 있는것 CHECK
.peek()
//큐에 몇개 있는지 CHECK
.size()
//큐에 x값이 있으면 true, 없으면 false
.contains(x)
[ 이해를 돕기 위한 예시 코드 ]
//큐 객체 생성하기
Queue<사용할문자열> Q=new LinkedList<>();
//예시코드
for(char x : str.toCharArray()) Q.offer(x); //큐에 집어 넣는 연산
for(char x : str2.toCharArray()){
if(Q.contains(x)){ //큐 안에 x가 있다면 ?
Q.poll(x); //큐 안에서 값을 꺼낸다.
}
}
'알고리즘' 카테고리의 다른 글
[ 재귀함수 정리 2️⃣ ] - 반복문과 재귀를 활용한 팩토리얼 계산 비교 (0) | 2025.05.10 |
---|---|
[ 재귀함수 정리 1️⃣ ] 호출은 위에서, 출력은 아래에서: 재귀 호출과 스택 프레임 (0) | 2025.05.10 |
BFS/DFS 정리 (1) | 2024.09.22 |