본문 바로가기

공부 기록/알고리즘

Do it! 알고리즘 코딩테스트 with JAVA - (6) 스택과 큐

스택과 큐

- 배열에서 발전된 형태의 자료구조

- 구조는 비슷하지만 처리 방식은 다르다.

스택

- 삽입과 삭제 연산이 후입선출(LIFO)로 이뤄지는 자료구조 => 재귀 함수 알고리즘 원리와 일맥상통하다.

- 삽입과 삭제가 한 쪽에서만 일어나는 특징이 있다.

- 깊이 우선 탐색, 백트래킹 종류의 코딩 테스트에 효과적이다.

- 용어 : top(삽입과 삭제가 일어나는 위치), push(삽입 연산), pop(삭제 연산), peek(조회 연산)

- 삽입과 삭제 연산이 선입선출(FIFO)로 이뤄지는 자료구조 => 먼저 들어온 데이터가 먼저 나간다.

- 삽입과 삭제가 양방향에서 이뤄진다.

- 너비 우선 탐색에서 자주 사용된다.

- 용어 : rear(가장 끝 데이터), front(가장 앞의 데이터), add(rear 삽입 연산), poll(front 삭제 연산), peek(front 조회 연산)

우선순위 큐

- 보통 힙 자료구조를 이용해 구현한다.

- 값이 들어간 순서와 상관 없이 우선순위가 높은 데이터가 먼저 나온다.

- 큐 설정에 따라 front에 항상 최댓값 또는 최솟값이 위치한다.


문제 풀이

https://yurison.tistory.com/432

 

[백준/자바] 1874 - 스택 수열

import java.io.*; import java.util.Stack; public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); StringBuilder sb = new StringBuilder(); int n = Integer.pars

yurison.tistory.com


https://yurison.tistory.com/359

 

[백준/자바] 2164 - 카드2

import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.LinkedList; import java.util.Queue; public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new Buffer

yurison.tistory.com


https://yurison.tistory.com/434

 

[백준/자바] 11286 - 절댓값 힙

import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.PriorityQueue; public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStr

yurison.tistory.com