728x90
https://www.acmicpc.net/problem/5430
package BKD_0x7_Deque;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.LinkedList;
public class BOJ_5430 {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int T = Integer.parseInt(br.readLine());
while(T-- > 0){
char[] p = br.readLine().toCharArray();
int n = Integer.parseInt(br.readLine());
String input = br.readLine();
LinkedList<Integer> dq = new LinkedList<>();
for(String val : input.substring(1,input.length()-1).split(",")){
if(!val.equals("")){
dq.add(Integer.parseInt(val));
}
}
System.out.println(AC(p,dq));
}
br.close ();
}
static String AC(char[] cmds, LinkedList<Integer> dq){
boolean isReverse = false;
for (char command : cmds) {
if (command == 'R')
isReverse = !isReverse;
else {
if (dq.size() == 0)
return "error";
if (isReverse)
dq.pollLast();
else
dq.pollFirst();
}
}
StringBuilder sb = new StringBuilder("[");
while (!dq.isEmpty()){
sb.append(isReverse ? dq.pollLast() : dq.pollFirst());
if(dq.size()!=0) sb.append(",");
}
sb.append("]");
return sb.toString();
}
}
덱을 사용하는 문제임을 알고 시작했음에도 불구하고 우엥..어떻게 뒤집지... 하고 있었다 ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ
뒤집어 보고나니 아닐 것 같아서 다른 분들의 풀이를 찾아보니 양방향 접근이 가능한 덱의 특징을 살려서 접근하면 되는 문제였다.
isReversed를 사용하여 'R' 명령어가 사용되었는지에 대한 여부를 파악하여 전방접근, 후방접근을 선택하였따.
전체적으로 코드의 길이를 줄이는 데는 다른 블로거분의 글을 많이 참고하였다.
다시 보고 나니 그냥 비슷한 것 같...
다음에는 더 잘 간결하게 작성해봐야게따.
https://girawhale.tistory.com/9
또한 꾸준하게 알고리즘을 풀지 않았던 탓에... ㅋㅋㅋㅋㅋㅋ
머리가 안돌아간다...
하루에 한 문제씩은 꼭 풀어야겠당...
728x90
'🐣 알고리즘 삐약 > 💻 백준 삐약' 카테고리의 다른 글
55 삐약 : 백준 1697| 숨바꼭질 [바킹독 문제 풀이|BFS|JAVA] (0) | 2024.05.24 |
---|---|
54 삐약 : 백준 2178| 미로탐색 [바킹독 문제 풀이|BFS|JAVA] (0) | 2024.05.23 |
52 삐약 : 백준 1021| 회전하는큐 [바킹독 문제 풀이Deque|JAVA] (0) | 2024.05.08 |
51 삐약 : 백준 1926| 그림 [바킹독 문제 풀이|BFS|JAVA] (0) | 2024.01.02 |
50 삐약 : 백준 2504| 괄호의 값 [바킹독 문제 풀이|Stack|JAVA] (0) | 2023.12.29 |