#유형 : 시뮬레이션

# 난이도 : 실버 4

# 간단한 시뮬레이션 문제이다. 리스트를 쓰던, 배열을 쓰던 편한 방식으로 사용하여 해결하면 된다. 이 때 조건은 

 

CBA DEF 를 예를 들어 ABC를 1집단, DEF를 2집단으로 두고, 2집단이 앞으로 오는 경우에는 무시하고 현재 인덱스의 집단이 1집단이면서 현재 인덱스의 집단과 다음인덱스의 집단이 다를 경우에 스왑을 해주면 된다.

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
package bj;
 
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.StringTokenizer;
 
public class p3048 {
    static String str1, str2;
    static ArrayList<Po> arrList = new ArrayList<>();
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        int N1,N2;
        StringTokenizer st = new StringTokenizer(br.readLine());
        N1 = Integer.parseInt(st.nextToken());
        N2 = Integer.parseInt(st.nextToken());
        
        str1 = br.readLine();
        
        for(int i=str1.length()-1; i>=0; i--)
            arrList.add(new Po(str1.charAt(i), 1));
        
        str2 = br.readLine();
        
        for(int i=0; i<str2.length(); i++)
            arrList.add(new Po(str2.charAt(i), 2));
        
        int time = Integer.parseInt(br.readLine());
        
        while(time-- > 0) {
            for(int i=0; i<arrList.size()-1; i++) {
                Po current = arrList.get(i);
                Po next = arrList.get(i+1);
                if(current.num != 2 && current.num != next.num) {
                    arrList.set(i, next);
                    arrList.set(i+1, current);
                    i++;
                }
            }
        }
        for(int i=0; i<arrList.size(); i++)
            System.out.print(arrList.get(i).ch);
    }
    public static class Po{
        char ch;
        int num;
        public Po(char ch, int n) {
            this.ch=ch;
            this.num=n;
        }
    }
}
 
cs

+ Recent posts