CS

스택/큐 (자바/java)

jini_11 2021. 5. 19. 17:45
728x90

1. 스택(Stack)

스택은 데이터를 일시적으로 저장하기 위해 사용하는 자료구조이다.

 

데이터의 입력과 출력 순서는 후입선출(LIFO: Last In First Out) 이다.

스택

 

스택 선언(Integer형으로 선언할 때)

import java.util.*;

Stack<Integer> s=new Stack<>(); //Stack 선언

 

스택 연산

 

push(): 데이터를 삽입하는 연산

 

pop(): top에 있는 데이터를 반환하고 삭제

 

peek(): top에 있는 데이터 반환

s.push(3);  //스택에 3 삽입
s.push(5);  //스택에 5 삽입

s.peek();  //스택에 top에 있는 5을 반환

s.pop();   //스택에 top에 있는 5을 반환하고 스택에서 삭제

 

주로 위에 있는 것들을 많이 사용한다.

 

 

스택을 이용한 문제풀이는 다음 문제를 참고하면 된다.

https://jinijiniblog.tistory.com/69

 

[프로그래머스] 기능개발 (자바/java)

이 문제는 스택을 사용하는 문제입니다. 앞에 있는 기능이 완성되기 전까지는 뒤에 있는 기능이 완성되더라도 먼저 배포하지 못하기 때문에 스택을 사용하기로 했습니다. 풀이는 다음과 같습니

jinijiniblog.tistory.com

 

 

2. 큐(Queue)

 

큐는 스택과 마찬가지로 데이터를 일시적으로 쌓아 두기 위한 자료구조이다. 

 

큐는 스택과는 다르게 데이터의 입력과 출력 순서가 선입선출(FIFO: First In First Out)이다.

 

자바에서 큐는 인터페이스이기 때문에 객체 생성이 불가능하다. 그래서 LinkedList를 형변환하여 사용하면 된다.

 

큐 선언

import java.util.*;

Queue<Integer> queue=new LinkedList<>(); //Integer형으로 선언했을 때

 

큐 연산

 

add(): 데이터를 삽입

 

peek(): 맨 앞에 있는 값을 반환

 

poll(): 맨 앞에 있는 값을 반환하고 큐에서 삭제

queue.add(3);  //큐에 3 삽입
queue.add(5);  //큐에 5 삽입

queue.peek();  //큐의 맨 앞에 있는 3을 반환

queue.poll();   //큐의 맨 앞에 있는 3을 반환하고 큐에서 삭제

 

큐와 관련된 문제는 다음과 같다. +우선순위 큐

https://jinijiniblog.tistory.com/71

 

[프로그래머스] 다리를 지나는 트럭 (자바/java)

이번에도 큐를 이용하는 문제이다. 풀이 문제에서 "다리를 건너는 트럭" 이 부분을 큐로 구현한다. 즉, 문제에서 다리=큐 그러면 다리의 길이(length)는 큐의 크기(queue.size())와 같은 의미가 되는 것

jinijiniblog.tistory.com

https://jinijiniblog.tistory.com/70

 

 

[프로그래머스] 프린터 (자바/java)

이번에는 큐를 사용하는 문제이다. 개인적으로 코드 길이에 비해 어렵게 느꼈던 문제... 풀이 1. priorities 배열 값들을 내림차순으로 큐에 저장 2. 큐에서 값을 꺼내는데, priorities[location]에 있는 값

jinijiniblog.tistory.com

 

728x90

'CS' 카테고리의 다른 글

CS 공부 - 데이터베이스  (0) 2022.07.17
CS 공부 - 자료구조  (0) 2022.07.09
CS 공부 - 자바(JAVA)  (0) 2022.07.07
완전탐색  (0) 2021.05.07