알고리즘/구현,시뮬
BOJ - 5430 ) AC
개발자가될수있을까?
2022. 3. 6. 00:40



https://www.acmicpc.net/problem/5430
5430번: AC
각 테스트 케이스에 대해서, 입력으로 주어진 정수 배열에 함수를 수행한 결과를 출력한다. 만약, 에러가 발생한 경우에는 error를 출력한다.
www.acmicpc.net
DEQUE를 사용해도되고 투포인터로 배열의 크기를 잡아주어도 된다.

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
StringBuilder sb = new StringBuilder();
int t = Integer.parseInt(br.readLine());
for(int tc=0;tc<t;tc++) {
String order = br.readLine();
int size = Integer.parseInt(br.readLine());
String number= br.readLine();
int arr[] = new int[size];
int s=0,e=size-1,r=0;
String numberList[] = number.split(",");
for(int j=0;j<size;j++) {
String now = numberList[j];
if(j==0 || j==size-1) {
now = now.replace("[","");
now = now.replace("]","");
}
arr[j] = Integer.parseInt(now);
}
int len = order.length();
for(int j=0;j<len;j++){
char now = order.charAt(j);
if(now=='D'){
if(r%2==0){
s++;
}else {
e--;
}
} else {
r++;
}
}
if(s>=size+1 || e < -1) {
sb.append("error");
} else {
if(r%2==0) {
sb.append("[");
for(int ii=s;ii<=e;ii++) {
sb.append(arr[ii]);
if(ii!=e) {
sb.append(",");
}
}
sb.append("]");
} else {
sb.append("[");
for(int ii=e;ii>=s;ii--) {
sb.append(arr[ii]);
if(ii!=s) {
sb.append(",");
}
}
sb.append("]");
}
}
sb.append("\n");
}
bw.write(sb.toString());
bw.flush();
bw.close();
}
}

항상 인덱스의 끝값을 명확하게 계산해주자..