๋ฌธ์
https://www.acmicpc.net/problem/10866
10866๋ฒ: ๋ฑ
์ฒซ์งธ ์ค์ ์ฃผ์ด์ง๋ ๋ช ๋ น์ ์ N (1 ≤ N ≤ 10,000)์ด ์ฃผ์ด์ง๋ค. ๋์งธ ์ค๋ถํฐ N๊ฐ์ ์ค์๋ ๋ช ๋ น์ด ํ๋์ฉ ์ฃผ์ด์ง๋ค. ์ฃผ์ด์ง๋ ์ ์๋ 1๋ณด๋ค ํฌ๊ฑฐ๋ ๊ฐ๊ณ , 100,000๋ณด๋ค ์๊ฑฐ๋ ๊ฐ๋ค. ๋ฌธ์ ์ ๋์์์ง
www.acmicpc.net
ํ์ด
๋ฑ์ ์ฌ์ฉ๋ฒ์ ์์งํ๋ฉด ํ ์ ์๋ ๋ฌธ์ ์ด๋ค.
๋ฑ ์ฌ์ฉ๋ฒ
https://dovnaldisn.tistory.com/96
[์๋ฃ๊ตฌ์กฐ] ๋ฑ(Deque)
๋ฑ(Deque)์ด๋? ์์ชฝ ๋์์ ์ฝ์ ๊ณผ ์ญ์ ๊ฐ ๊ฐ๋ฅํ ์๋ฃ๊ตฌ์กฐ์ด๋ค. ์ ์ ์ ์ถ(FIFO), ํ์ ์ ์ถ(LIFO) ๊ฐ๋ ์ด ๋ชจ๋ ์ ์ฉ์ด ๋๋ ์๋ฃ๊ตฌ์กฐ์ด๋ค. Java์์ Deque์ java.util.Deque ์ธํฐํ์ด์ค๋ฅผ ์ด์ฉํด ๊ตฌํํ ์
dovnaldisn.tistory.com
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.Deque;
import java.util.LinkedList;
public class Main {
/**
* ์ ์ X๋ฅผ ๋ฑ์ ์์ ๋ฃ๋๋ค.
*
* @param x
* @param deque
*/
public void pushFront(int x, Deque<Integer> deque) {
deque.offerFirst(x);
}
/**
* ์ ์ X๋ฅผ ๋ฑ์ ๋ค์ ๋ฃ๋๋ค.
*
* @param x
* @param deque
*/
public void pushBack(int x, Deque<Integer> deque) {
deque.offerLast(x);
}
/**
* ๋ฑ์ ๊ฐ์ฅ ์์ ์๋ ์ ๋นผ๊ธฐ, ์๋ ๊ฒฝ์ฐ -1
*
* @param deque
* @return
*/
public int popFront(Deque<Integer> deque) {
if (deque.isEmpty()) {
return -1;
} else {
return deque.pollFirst();
}
}
/**
* ๋ฑ์ ๊ฐ์ฅ ๋ค์ ์๋ ์ ๋นผ๊ธฐ, ์๋ ๊ฒฝ์ฐ -1
*
* @param deque
* @return
*/
public int popBack(Deque<Integer> deque) {
if (deque.isEmpty()) {
return -1;
} else {
return deque.pollLast();
}
}
/**
* ๋ฑ์ ๋ค์ด์๋ ์ ์์ ๊ฐ์
*
* @param deque
* @return
*/
public int dequeSize(Deque<Integer> deque) {
return deque.size();
}
/**
* ๋ฑ์ด ๋น์ด์์ผ๋ฉด 1, ์๋๋ฉด 0
*
* @param deque
* @return
*/
public int empty(Deque<Integer> deque) {
if (deque.isEmpty()) {
return 1;
} else {
return 0;
}
}
/**
* ๋ฑ์ ๊ฐ์ฅ ์์ ์๋ ์ ์ ์ถ๋ ฅ, ์๋ ๊ฒฝ์ฐ -1 ์ถ๋ ฅ
*
* @param deque
* @return
*/
public int viewFront(Deque<Integer> deque) {
if (deque.isEmpty()) {
return -1;
} else {
return deque.peekFirst();
}
}
/**
* ๋ฑ์ ๊ฐ์ฅ ์์ ์๋ ์ ์ ์ถ๋ ฅ, ์๋ ๊ฒฝ์ฐ -1 ์ถ๋ ฅ
*
* @param deque
* @return
*/
public int viewBack(Deque<Integer> deque) {
if (deque.isEmpty()) {
return -1;
} else {
return deque.peekLast();
}
}
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
Main m = new Main();
Deque<Integer> deque = new LinkedList<>();
int num = Integer.parseInt(br.readLine());
int number;
for (int i = 0; i < num; i++) {
String input = br.readLine();
String[] inputStr = input.split(" ");
switch (inputStr[0]) {
case "push_front":
m.pushFront(Integer.parseInt(inputStr[1]), deque);
break;
case "push_back":
m.pushBack(Integer.parseInt(inputStr[1]), deque);
break;
case "pop_front":
number = m.popFront(deque);
bw.write(String.valueOf(number) + "\n");
break;
case "pop_back":
number = m.popBack(deque);
bw.write(String.valueOf(number) + "\n");
break;
case "size":
number = m.dequeSize(deque);
bw.write(String.valueOf(number) + "\n");
break;
case "empty":
number = m.empty(deque);
bw.write(String.valueOf(number) + "\n");
break;
case "front":
number = m.viewFront(deque);
bw.write(String.valueOf(number) + "\n");
break;
case "back":
number = m.viewBack(deque);
bw.write(String.valueOf(number) + "\n");
break;
}
}
bw.flush();
bw.close();
}
}
์ ๋ต
'๐ฐ๐๐๐๐๐๐๐๐ > ๐ฑ๐๐๐๐๐๐๐' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋ฐฑ์ค/Java] ๋ฐฐ์ด ๋๋ฆฌ๊ธฐ 3 16935 (1) | 2023.11.27 |
---|---|
[๋ฐฑ์ค/Java] ๋ก๋ด ์๋ฎฌ๋ ์ด์ 2174 (1) | 2023.11.26 |
[๋ฐฑ์ค/Java] ๋ณตํธํ 9046 (0) | 2023.11.18 |
[๋ฐฑ์ค/Java] ํ์ ํฐ๋จ๋ฆฌ๊ธฐ 2346 (0) | 2023.11.17 |
[๋ฐฑ์ค/Java] ํ 2 18258 (0) | 2023.11.15 |