728x90
https://www.acmicpc.net/problem/5430
5430번: AC
각 테스트 케이스에 대해서, 입력으로 주어진 정수 배열에 함수를 수행한 결과를 출력한다. 만약, 에러가 발생한 경우에는 error를 출력한다.
www.acmicpc.net
풀이)
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.ArrayDeque;
import java.util.Deque;
import java.util.StringTokenizer;
public class Main_BJ_5430_AC {
public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int t = Integer.parseInt(br.readLine());
for (int tc = 1; tc <= t; tc++) {
StringBuilder sb = new StringBuilder();
String p = br.readLine();
int n = Integer.parseInt(br.readLine());
// Deque<Character> q = new ArrayDeque<>();
Deque<Integer> q = new ArrayDeque<>();
StringTokenizer st = new StringTokenizer(br.readLine(),"[],");
for(int i=0; i<n; i++) {
q.offer(Integer.parseInt(st.nextToken()));
}
// 안 되는 방법 : 배열에 들어갈 숫자는 최대 100이기 때문에 charAt을 사용해 끊으면 안 됨
// 30, 40이 3, 4로 끊겨 읽힘
// String str = br.readLine();
// for (int i = 1; i < str.length() - 1; i++) {
// if (i % 2 == 1)
// q.offer(str.charAt(i));
// }
// deque의 앞을 보는지, 뒤를 보는지 : 앞이 true
boolean flag = true;
// error인지 아닌지
boolean error = false;
for (char command : p.toCharArray()) {
if (command == 'R') { // 뒤집기
flag = !flag;
} else { //버리기
if (q.isEmpty()) {
error = true;
break;
}
if (flag)
q.poll();
else
q.pollLast();
}
}//for
if (!error) {
sb.append("[");
int size = q.size();
if (flag) {
for (int i = 0; i < size; i++) {
if (i == size - 1)
sb.append(q.poll());
else
sb.append(q.poll()).append(",");
}
} else {
for (int i = 0; i < size; i++) {
if (i == size - 1)
sb.append(q.pollLast());
else
sb.append(q.pollLast()).append(",");
}
}
sb.append("]").append("\n");
}//if
else
sb.append("error").append("\n");
System.out.print(sb);
}//tc
}//main
}
문제 자체는 어렵지 않은데,
1. 입력을 받아 [] ,를 제거하는 부분
2. 시간초과에 걸리지 않기 위해 StringBuilder를 사용하는 것
3. StringBuilder를 사용하면서 얻은 출력 형식 맞추기
이게 참 사람 발목을 잡았다.
구글링을 통해 확인하는데 어이없더라ㅋㅋㅋㅋㅋ
하여튼!! 가장 나에게 까다로웠던 1번 부분을 주석에 왜 안 되는지 적어두었다.
잊지 말자!!
728x90
'코테 > 백준' 카테고리의 다른 글
백준 1920 수 찾기(JAVA) (0) | 2023.01.12 |
---|---|
백준 2869 달팽이는 올라가고 싶다(JAVA) (0) | 2023.01.12 |
백준 11047 동전0 (JAVA) (0) | 2023.01.11 |
백준 7569 토마토(JAVA) (0) | 2023.01.10 |
백준 2920 음계(JAVA) (1) | 2023.01.09 |