/
BAEKJOON 5430
75 lines (68 loc) · 2.8 KB
/
BAEKJOON 5430
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
StringTokenizer st;
int T = in.nextInt(); //테스트 케이스 수 입력
for(int i = 0; i < T; i++) { //테스트 케이스 수만큼 반복
String p = in.next(); //함수 입력
int n = in.nextInt(); //데이터수 입력
String data = in.next(); //데이터 입력
int front = 0; //배열 앞 위치
int back = n; //배열 뒤 위치
int count = 0; //뒤집기 여부 카운트 홀수면 뒤집은거 짝수면 안뒤집은거
for(int j =0; j<p.length();j++) {
if(p.subSequence(j, j+1).equals("R")) { //뒤집기
count++;
}
else if(p.subSequence(j, j+1).equals("D")) { //버리기
if(count%2==0) { //짝수면 안뒤집은거니깐 앞에를 버림
front++;
}
else { // 홀수는 뒤집은거라 뒤를 버림
back--;
}
}
}
if (n==0&&front==0&&back==0&&count!=0) { // 빈배열에 뒤집기만 한 경우
System.out.println("[]");
}
else if (back == front) { //빈배열을 출력해줄 경우
System.out.println("[]");
}
else if (back < front) { //배열 내용보다 버리기를 많이한 경우
System.out.println("error");
}
else {
String[] a = new String[n]; // 데이터를 저장할 배열을 생성
data = data.substring(1, data.length()-1); //처음 입력받은 데이터에서 앞뒤 [] 부분을 자르고 저장
st = new StringTokenizer(data,","); // StringTokenizer을 이용해 ,을 기준으로 문자열을 슬라이싱한다.
for(int z = 0; z < n; z++) {
a[z] = st.nextToken(); // 슬라이싱한 데이터를 생선한 배열에 넣어준다
}
System.out.print("[");
if(count%2==0) { //배열을 처음부터 출력해준다.
for (int j = front; j <= back-1; j++) {
if(j == back-1) {
System.out.print(a[j]);
}
else {
System.out.print(a[j]+",");
}
}
}
else { //배열을 역순으로 출력해준다
for (int j = back-1; j >= front; j--) {
if(j == front) {
System.out.print(a[j]);
}
else {
System.out.print(a[j]+",");
}
}
}
System.out.println("]");
}
}
}
}