๋ฌธ์
๋ฌธ์ ๋งํฌ https://www.acmicpc.net/problem/10845
- ์ ์๋ฅผ ์ ์ฅํ๋ ํ๋ฅผ ๊ตฌํํ ๋ค์, ์
๋ ฅ์ผ๋ก ์ฃผ์ด์ง๋ ๋ช
๋ น์ ์ฒ๋ฆฌํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์์ค.
- push X: ์ ์ X๋ฅผ ํ์ ๋ฃ๋ ์ฐ์ฐ์ด๋ค.
- pop: ํ์์ ๊ฐ์ฅ ์์ ์๋ ์ ์๋ฅผ ๋นผ๊ณ , ๊ทธ ์๋ฅผ ์ถ๋ ฅํ๋ค. ๋ง์ฝ ํ์ ๋ค์ด์๋ ์ ์๊ฐ ์๋ ๊ฒฝ์ฐ์๋ -1์ ์ถ๋ ฅํ๋ค.
- size: ํ์ ๋ค์ด์๋ ์ ์์ ๊ฐ์๋ฅผ ์ถ๋ ฅํ๋ค.
- empty: ํ๊ฐ ๋น์ด์์ผ๋ฉด 1, ์๋๋ฉด 0์ ์ถ๋ ฅํ๋ค.
- front: ํ์ ๊ฐ์ฅ ์์ ์๋ ์ ์๋ฅผ ์ถ๋ ฅํ๋ค. ๋ง์ฝ ํ์ ๋ค์ด์๋ ์ ์๊ฐ ์๋ ๊ฒฝ์ฐ์๋ -1์ ์ถ๋ ฅํ๋ค.
- back: ํ์ ๊ฐ์ฅ ๋ค์ ์๋ ์ ์๋ฅผ ์ถ๋ ฅํ๋ค. ๋ง์ฝ ํ์ ๋ค์ด์๋ ์ ์๊ฐ ์๋ ๊ฒฝ์ฐ์๋ -1์ ์ถ๋ ฅํ๋ค.
- ๋ช ๋ น์ ์ด ์ฌ์ฏ ๊ฐ์ง์ด๋ค.
- ์ฒซ์งธ ์ค์ ์ฃผ์ด์ง๋ ๋ช ๋ น์ ์ N (1 ≤ N ≤ 10,000)์ด ์ฃผ์ด์ง๋ค.
- ๋์งธ ์ค๋ถํฐ N๊ฐ์ ์ค์๋ ๋ช ๋ น์ด ํ๋์ฉ ์ฃผ์ด์ง๋ค. ์ฃผ์ด์ง๋ ์ ์๋ 1๋ณด๋ค ํฌ๊ฑฐ๋ ๊ฐ๊ณ , 100,000๋ณด๋ค ์๊ฑฐ๋ ๊ฐ๋ค. ๋ฌธ์ ์ ๋์์์ง ์์ ๋ช ๋ น์ด ์ฃผ์ด์ง๋ ๊ฒฝ์ฐ๋ ์๋ค.
- ์ถ๋ ฅํด์ผํ๋ ๋ช ๋ น์ด ์ฃผ์ด์ง ๋๋ง๋ค, ํ ์ค์ ํ๋์ฉ ์ถ๋ ฅํ๋ค.
์์ด๋์ด
- ArrayDeque๋ก stack๊ณผ queue ๊ธฐ๋ฅ์ ํ๊บผ๋ฒ์ ์ผ๋ค.
- stack์ ์ ์ ํ์ถ์ด๊ณ queue๋ ์ ์ ์ ์ถ์ด๊ธฐ ๋๋ฌธ์ ๊ฐ์ ๊บผ๋ด๋ ๋ฐฉ๋ฒ์ด ๋ค๋ฅธ๋ฐ, front๋ฅผ ์ ๋ ฅ๋ฐ์ ๋, ๊ฐ์ฅ ์์ ์๋ ์ ์๋ฅผ ์ถ๋ ฅํด์ผ๋๊ณ back์ผ๋, ๊ฐ์ฅ ๋ค์ ์๋ ์ ์๋ฅผ ์ถ๋ ฅํด์ผ๋๋ฏ๋ก ArrayDeque๋ฅผ ์ผ๋ค.
- ์ ๋ ฅ์ addLast๋ก queue ์ฒ๋ผ ์ ๋ ฅ์ ๋ฐ๊ณ ๊ฐ์ ๋นผ๋ผ๋๋ pollFirst๋ฅผ ์จ์ ๊ฐ์ฅ ์์ ์๋ ์ ์๋ฅผ ๋บ๋ค.
- ์ฌ์ด์ฆ๋ size๋ก ์ถ๋ ฅํ๊ณ ๊ฐ์ฅ ์์ ์๋ ๊ฐ์ ์ถ๋ ฅํ๊ธฐ ์ํด peekFirst๋ฅผ ์ผ๋ค.
- ๋ง์ง๋ง์ผ๋ก ๊ฐ์ฅ ๋ค์ ์๋ ๊ฐ์ ์ถ๋ ฅํ๊ธฐ ์ํด peekLast๋ฅผ ์ผ๋ค.
๊ฒช์ ์ํ์ฐฉ์ค
- ์ฒ์์๋ Queue๋ก ํ๋ ค๊ณ ํ๋ค๊ฐ ๊ฐ์ฅ ๋ค์ ์๋ ๊ฐ์ ์ด๋ป๊ฒ ์ถ๋ ฅํ์ง๋ ๋ฌธ์ ์ ์ด ์๊ฒจ ์ฐพ์๋ณด๋ค๊ฐ ArrayDeque๋ก ํ๊ฒ ๋์๋ค... ์๋กญ๊ฒ ๋ฌธ์ ๋ฅผ ํ ์ ์์ด์ ์ข์๋ค..!
์ฝ๋
import java.io.*;
import java.util.*;
public class BOJ10845 {
public static void main(String[] args) throws Exception{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringBuilder sb = new StringBuilder();
int N = Integer.parseInt(br.readLine());
// queue์ stack์ ๋ชจ๋ ์ฐ๊ธฐ ์ํด์
ArrayDeque<Integer> q = new ArrayDeque<>();
for(int test = 0; test < N; test++){
StringTokenizer st = new StringTokenizer(br.readLine());
// ๋ช
๋ น์ด๋ฅผ ์
๋ ฅ๋ฐ์
String order = st.nextToken();
// ๋ง์ฝ ๋ช
๋ น์ด๊ฐ push๋ผ๋ฉด
if(order.equals("push")){
int n = Integer.parseInt(st.nextToken());
// ์๊ฐ queue์ฒ๋ผ ์ ์ฅ๋์ด์ผ ํ๋ฏ๋ก addLast๋ก
// n์ queue์ ์ถ๊ฐ
q.addLast(n);
}
// ๋ง์ฝ ๋ช
๋ น์ด๊ฐ pop์ด๋ผ๋ฉด
else if(order.equals("pop")){
// ๋ง์ฝ queue๊ฐ ๋น์ด์๋ค๋ฉด -1 ์ถ๋ ฅ
if(q.isEmpty()){
sb.append(-1 + "\n");
}
// ๋น์ด์์ง ์๋ค๋ฉด
else{
// ๊ฐ์ฅ ์์ ์๋ ์ ์๋ฅผ ๋นผ๋ด๊ณ ์ ์ฅํ๊ณ ์ถ๋ ฅ
int n = q.pollFirst();
sb.append(n + "\n");
}
}
// ๋ง์ฝ ๋ช
๋ น์ด๊ฐ size๋ผ๋ฉด
else if(order.equals("size")){
// queue์ ์ฌ์ด์ฆ๋ฅผ ์ ์ฅ ํ ์ถ๋ ฅ
int n = q.size();
sb.append(n + "\n");
}
// ๋ง์ฝ ๋ช
๋ น์ด๊ฐ empty๋ผ๋ฉด
else if(order.equals("empty")){
// queue๊ฐ ๋น์ด์์ ๊ฒฝ์ฐ
if(q.isEmpty()){
// 1์ถ๋ ฅ
sb.append(1 + "\n");
}
// ๋น์ด์์ง ์๋ค๋ฉด
else{
// 0์ถ๋ ฅ
sb.append(0 + "\n");
}
}
// ๋ง์ฝ ๋ช
๋ น์ด๊ฐ front์ด๊ณ
else if(order.equals("front")){
// queue๊ฐ ๋น์ด์๋ค๋ฉด
if(q.isEmpty()){
sb.append(-1 + "\n");
}
// ๋น์ด์์ง ์๋ค๋ฉด
else{
// ์ ์ผ ์์ ์ ์ฅ๋ ๊ฐ์ ์ ์ฅ ํ ์ถ๋ ฅ
int n = q.peekFirst();
sb.append(n + "\n");
}
}
// ๋ง์ฝ ๋ช
๋ น์ด๊ฐ back์ด๊ณ
else if(order.equals("back")){
// queue๊ฐ ๋น์ด์๋ค๋ฉด
if(q.isEmpty()){
sb.append(-1 + "\n");
}
// ๋น์ด์์ง ์๋ค๋ฉด
else{
// ์ ์ผ ๋์ค์ ์ ์ฅ๋ ๊ฐ์ ์ ์ฅ ํ ์ถ๋ ฅ
int n = q.peekLast();
sb.append(n + "\n");
}
}
}
System.out.println(sb);
}
}
'์๊ณ ๋ฆฌ์ฆ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Java] BOJ 1929 ์์ ๊ตฌํ๊ธฐ (0) | 2024.07.21 |
---|---|
[Java] BOJ 18110 solved.ac (2) | 2024.07.21 |
[Java] BOJ 10828 ์คํ (0) | 2024.07.20 |
[Java] BOJ 10816 ์ซ์ ์นด๋ 2 (0) | 2024.07.20 |
[Java] BOJ 10773 ์ ๋ก (0) | 2024.07.20 |