[BOJ] 5430.AC (Java)
by ๋๋ถ๋
5430๋ฒ: AC
๊ฐ ํ ์คํธ ์ผ์ด์ค์ ๋ํด์, ์ ๋ ฅ์ผ๋ก ์ฃผ์ด์ง ์ ์ ๋ฐฐ์ด์ ํจ์๋ฅผ ์ํํ ๊ฒฐ๊ณผ๋ฅผ ์ถ๋ ฅํ๋ค. ๋ง์ฝ, ์๋ฌ๊ฐ ๋ฐ์ํ ๊ฒฝ์ฐ์๋ error๋ฅผ ์ถ๋ ฅํ๋ค.
www.acmicpc.net
์ด ๋ฌธ์ ์์๋ ํ ์คํธ์ผ์ด์ค T, ์ํํ ํจ์ p, ๋ฐฐ์ด ๊ธธ์ด n, ์ซ์๊ฐ ๋ค์ด๊ฐ ๋ฐฐ์ด์ด ์ ๋ ฅ์ผ๋ก ์ฃผ์ด์ง๋๋ค.
p๋ 'RDD'์ ๊ฐ์ ํํ๋ก ์ฃผ์ด์ง๋๋ฐ, ์ฌ๊ธฐ์ R์ ๋ฐฐ์ด ์์๋ฅผ ๋ค์ง๊ณ , D๋ ์ฒซ ๋ฒ์งธ ์ซ์๋ฅผ ๋ฒ๋ฆฝ๋๋ค.
๋ฐฐ์ด์ด ๋น์ด์๋๋ฐ D๋ฅผ ์ฌ์ฉํ ๊ฒฝ์ฐ ์๋ฌ๊ฐ ๋ฐ์ํฉ๋๋ค.
์ฃผ์ด์ง ์ ์ ๋ฐฐ์ด์ ํจ์ ์ํ ๊ฒฐ๊ณผ๋ฅผ ์ถ๋ ฅํ๋ฉด ๋๋๋ฐ, ์๋ฌ ๋ฐ์ ์ error๋ฅผ ์ถ๋ ฅํฉ๋๋ค.
๋ชจ๋ R์ ๋ํด์ ๋ฐฐ์ด์ ๋ค์ง์ด๊ฐ๋ฉฐ ์ํ์ ํ๋ ๊ฒฝ์ฐ ์๊ฐ์ด๊ณผ๊ฐ ๋ฐ์ํ๊ฒ ๋ฉ๋๋ค.
์๊ฐ์ด๊ณผ๊ฐ ๋ฐ์ํ์ง ์๊ฒ ํ๋ ค๋ฉด, R์ ์ํ์ ๋ฐ๋ผ D์ ์ํ ์์น๋ฅผ ๋ฐ๊พธ์ด์ฃผ๋ฉด ๋ฉ๋๋ค.
deque์ ๋ง๋ค์ด ์ซ์๋ฅผ ์ ์ฅํ ํ, R์ด ๋ฐ์ํ ๋๋ง๋ค D์ ์ํ์์น๋ฅผ ๋งจ ์, ๋งจ ๋ค๋ก ๋ฐ๊พธ๋ ํํ๋ก ์งํํฉ๋๋ค.
import java.io.*;
import java.util.ArrayDeque;
import java.util.StringTokenizer;
class Main {
public static BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
public static BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
public static void main(String[] args) throws IOException {
StringTokenizer st;
ArrayDeque<Integer> deque;
int T = Integer.parseInt(br.readLine()); // ํ
์คํธ์ผ์ด์ค ์
while(T-- > 0) {
String p = br.readLine(); // ์ํํ ํจ์
int n = Integer.parseInt(br.readLine()); // ๋ฐฐ์ด์ ๊ธธ์ด
st = new StringTokenizer(br.readLine(), "[],"); // ํน์ ๋ฌธ์์ด์ ๊ธฐ์ค์ผ๋ก ๋๋์ด st์ ์ ์ฅ
deque = new ArrayDeque<Integer>(); // ๋ฑ ์ด๊ธฐํ
for (int i = 0; i < n; i++) { // ๋ฑ ์์ฑ
deque.add(Integer.parseInt(st.nextToken()));
}
AC(p, deque);
}
bw.flush();
bw.close();
br.close();
}
public static void AC(String command, ArrayDeque<Integer> deque) throws IOException {
boolean isReverse = false; // ์์ ๋ณ๊ฒฝ ์ฌ๋ถ (default : ์์ ๋ณ๊ฒฝ X์ ์๋ฏธ๋ก false)
for(char cmd : command.toCharArray()) {
if (cmd == 'R') {
isReverse = !isReverse; // ์์ ๋ค์ง๊ธฐ
continue;
}
if (cmd == 'D') {
if (deque.isEmpty()) { // ๊ธธ์ด๊ฐ 0์ธ ๊ฒฝ์ฐ ์ํ์ด ๋ถ๊ฐ๋ฅํ๋ฏ๋ก error ๋ฐํ
bw.write("error\n");
return;
}
if (isReverse) { // ์์๋ฅผ ๋ค์ง์ด์ผ ํ๋ ๊ฒฝ์ฐ
deque.pollLast();
} else { // ์์๋ฅผ ๋ค์ง์ ํ์๊ฐ ์๋ ๊ฒฝ์ฐ
deque.pollFirst();
}
}
}
// ๋ชจ๋ ํจ์์ ๋ํด ์ ์์ ์ผ๋ก ์ํํ ๊ฒฝ์ฐ ์ถ๋ ฅ๋ฌธ์ ๋ง๋ค์ด์ผ ํจ
makePrint(deque, isReverse);
}
public static void makePrint(ArrayDeque<Integer> deque, boolean isReverse) throws IOException {
bw.write("[");
if (!deque.isEmpty()) { // deque์ ์์๊ฐ ์กด์ฌํ๋ ๊ฒฝ์ฐ
if (isReverse) { // ์์๋ฅผ ๋ค์ง์ ๊ฒฝ์ฐ
bw.write(String.valueOf(deque.pollLast()));
while (!deque.isEmpty()){
bw.write("," + String.valueOf(deque.pollLast()));
}
}
else { // ์์๋ฅผ ๋ค์ง์ง ์์ ๊ฒฝ์ฐ
bw.write(String.valueOf(deque.pollFirst()));
while(!deque.isEmpty()) {
bw.write("," + String.valueOf(deque.pollFirst()));
}
}
}
bw.write("]\n");
}
}
'Algorithm > BOJ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[BOJ] 10159.์ ์ธ (Java) (0) | 2021.05.02 |
---|---|
[BOJ] 1043.๊ฑฐ์ง๋ง (Java) (0) | 2021.04.30 |
[BOJ] 5052.์ ํ๋ฒํธ ๋ชฉ๋ก (Java) (0) | 2021.04.30 |
[BOJ] 11720.์ซ์์ ํฉ (Java) (0) | 2021.04.27 |
[BOJ] 15685.๋๋๊ณค์ปค๋ธ (Python) (0) | 2021.04.23 |
๋ธ๋ก๊ทธ์ ์ ๋ณด
๋๋ถ๋์ Devlog
๋๋ถ๋