공부/algorithm
BOJ AC(5430) - Java
닭띠입니다만
2021. 9. 13. 18:23
문제 - https://www.acmicpc.net/problem/5430
5430번: AC
각 테스트 케이스에 대해서, 입력으로 주어진 정수 배열에 함수를 수행한 결과를 출력한다. 만약, 에러가 발생한 경우에는 error를 출력한다.
www.acmicpc.net
import java.io.*;
import java.util.*;
public class Main {
static BufferedReader br= new BufferedReader(new InputStreamReader(System.in));
static BufferedWriter bw= new BufferedWriter(new OutputStreamWriter(System.out));
static StringBuilder sb = new StringBuilder();
static int T, n;
static char[] p;
static String[] X;
public static void main(String[] args) throws Exception {
T = Integer.parseInt(br.readLine()); // 테스트케이스 수
for (int i = 0; i < T; i++) {
p = br.readLine().toCharArray(); // 함수들 수
n = Integer.parseInt(br.readLine());
String input = br.readLine(); // 입력받고
if(input.length()>2)// []보다 길면
X = input.substring(1, input.length()-1).split(","); // 구분자를 , 로 하여 입력받고
boolean error = false; // 에러발생여부
boolean right = true; // 진행방향
int l = 0;
int r = n-1;
for (char cmd : p){ // 함수하나씩 보면서
if(cmd=='R') // reverse면
right = !right; // right 뒤집어줌
else{ // D일때
if (l>r){ // 빈배열이라면
error = true; // 에러발생
sb.append("error\n");
break; // 즉시종료
}
if(right) // 아니면 right여부에 따라 포인터이동.
l++;
else
r--;
}
}
if(!error) {
sb.append("[");
while(l<=r){
sb.append(X[right? l++ : r--]);
if(l<=r)
sb.append(",");
}
sb.append("]\n");
}
}
bw.write(sb.toString());
bw.flush();
bw.close();
br.close();
}
}
Java로 처음 문자열 처리를 해봤다.
여러가지를 경험하게 되는 좋은 문제였다.