๋ฌธ์
์ ์๋ฅผ ์ ์ฅํ๋ ํ๋ฅผ ๊ตฌํํ ๋ค์, ์ ๋ ฅ์ผ๋ก ์ฃผ์ด์ง๋ ๋ช ๋ น์ ์ฒ๋ฆฌํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์์ค.
๋ช ๋ น์ ์ด ์ฌ์ฏ ๊ฐ์ง์ด๋ค.
- push X: ์ ์ X๋ฅผ ํ์ ๋ฃ๋ ์ฐ์ฐ์ด๋ค.
- pop: ํ์์ ๊ฐ์ฅ ์์ ์๋ ์ ์๋ฅผ ๋นผ๊ณ , ๊ทธ ์๋ฅผ ์ถ๋ ฅํ๋ค. ๋ง์ฝ ํ์ ๋ค์ด์๋ ์ ์๊ฐ ์๋ ๊ฒฝ์ฐ์๋ -1์ ์ถ๋ ฅํ๋ค.
- size: ํ์ ๋ค์ด์๋ ์ ์์ ๊ฐ์๋ฅผ ์ถ๋ ฅํ๋ค.
- empty: ํ๊ฐ ๋น์ด์์ผ๋ฉด 1, ์๋๋ฉด 0์ ์ถ๋ ฅํ๋ค.
- front: ํ์ ๊ฐ์ฅ ์์ ์๋ ์ ์๋ฅผ ์ถ๋ ฅํ๋ค. ๋ง์ฝ ํ์ ๋ค์ด์๋ ์ ์๊ฐ ์๋ ๊ฒฝ์ฐ์๋ -1์ ์ถ๋ ฅํ๋ค.
- back: ํ์ ๊ฐ์ฅ ๋ค์ ์๋ ์ ์๋ฅผ ์ถ๋ ฅํ๋ค. ๋ง์ฝ ํ์ ๋ค์ด์๋ ์ ์๊ฐ ์๋ ๊ฒฝ์ฐ์๋ -1์ ์ถ๋ ฅํ๋ค.
์ ๋ ฅ
์ฒซ์งธ ์ค์ ์ฃผ์ด์ง๋ ๋ช ๋ น์ ์ N (1 โค N โค 10,000)์ด ์ฃผ์ด์ง๋ค. ๋์งธ ์ค๋ถํฐ N๊ฐ์ ์ค์๋ ๋ช ๋ น์ด ํ๋์ฉ ์ฃผ์ด์ง๋ค. ์ฃผ์ด์ง๋ ์ ์๋ 1๋ณด๋ค ํฌ๊ฑฐ๋ ๊ฐ๊ณ , 100,000๋ณด๋ค ์๊ฑฐ๋ ๊ฐ๋ค. ๋ฌธ์ ์ ๋์์์ง ์์ ๋ช ๋ น์ด ์ฃผ์ด์ง๋ ๊ฒฝ์ฐ๋ ์๋ค.
์ถ๋ ฅ
์ถ๋ ฅํด์ผํ๋ ๋ช ๋ น์ด ์ฃผ์ด์ง ๋๋ง๋ค, ํ ์ค์ ํ๋์ฉ ์ถ๋ ฅํ๋ค.
์๊ฐ ์ ํ | ๋ฉ๋ชจ๋ฆฌ ์ ํ | ์ ์ถ | ์ ๋ต | ๋งํ ์ฌ๋ | ์ ๋ต ๋น์จ |
---|---|---|---|---|---|
0.5 ์ด (์ถ๊ฐ ์๊ฐ ์์) | 256 MB | 113961 | 52728 | 41441 | 48.953% |
https://www.acmicpc.net/problem/10845
ํ์ด
ํ๋ฅผ ๊ตฌํํ๋ ๋ฌธ์ . ์ฌ์ด ๋ฌธ์ ์ธ๋ฐ ์ฒ๋ฆฌ๊ณผ์ ์์ back
๋ถ๋ถ์ ์ด๋ป๊ฒ ์ฒ๋ฆฌํ๋ฉด ์ข์๊น ์๊ฐ์ด ๋ค์๋ค. ๋ด๊ฐ ๊ตฌํํ ๋ฐฉ๋ฒ์ ๋ง์ง๋ง์ push
๋ ๊ฐ์ ๊ทธ๋๋ก ๊ฐ์ง๊ณ ์ค๋ ๋ฐฉ๋ฒ์ธ๋ฐ ์๋์ ๊ฐ์ดqueue.getlast()๋ฅผ ์ฌ์ฉํ์ฌ ์ฒ๋ฆฌํ๋ ๋ฐฉ๋ฒ๋ ์์์ ์ฐพ์๋ค.
queue.getlast()๋ฅผ ์ฌ์ฉsb.append(((LinkedList<Integer>) queue).getLast()).append('\n');
์ฝ๋
public class ํ {
static Queue<Integer> queue = new LinkedList<>();
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
StringBuilder sb = new StringBuilder();
int N = sc.nextInt();
int last = 0;
for(int i=0; i<N; i++){
switch (sc.next()){
case "push":
int num = sc.nextInt();
last = num;
push(num);
break;
case "pop":
sb.append(pop()).append("\n");
break;
case "size":
sb.append(size()).append("\n");
break;
case "empty":
sb.append(empty()).append("\n");
break;
case "front":
sb.append(front()).append("\n");
break;
case "back":
sb.append(back(last)).append("\n");
break;
}
}
System.out.println(sb);
sc.close();
}
private static int back(int last) {
if(queue.isEmpty()) return -1;
return last;
}
private static int front() {
if(queue.isEmpty()) return -1;
return queue.peek();
}
private static int empty() {
if (queue.isEmpty()) return 1;
else return 0;
}
private static int size() {
return queue.size();
}
private static int pop() {
if(queue.isEmpty()) return -1;
return queue.poll();
}
private static void push(int num) {
queue.add(num);
}
}