umilove98의 블로그

백준 1343 Java 본문

algorithm/백준

백준 1343 Java

umilove98 2021. 7. 29. 16:19
반응형

 

입력값 전체를 한 문자씩 순회

X가 나오면 카운트해두고 . 을 만나거나 마지막 문자에 도달하면 카운트해둔 x 의 값을 AAAA, BB로 구성할 수 있는지 판단한 후에 불가능하면 -1 출력 

가능하면 카운트한 수를 먼저 AAAA로 가능한 만큼 채우고 나머지를  BB로 채움

 

 

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
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
 
public class Main {
    static String output = "";
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        String st = br.readLine();
        char[] input = st.toCharArray();    // 입력값을 배열에 저장
        
        int cnt = 0;
        char now;
        
        for(int i  = 0; i < input.length; i++) {    // 입력값 배열에서 한 char 씩 순회
            now = input[i];
            if (now == 'X') {    // 현재 값이 X인 경우
                cnt++;    // 지나온 X의 개수를 누적시키는 변수
            }
            if (now == '.') {    // 현재 값이 .인경우 그전까지 누적된 X의 개수가 홀수면 -1 찍고 종료 짝수인 경우 process 함수에 돌림 
                if(cnt % 2 != 0) {
                    System.out.println("-1");
                    return;
                }
                process(cnt);
 
                output = output + ".";    // X의 값을 AAAA, BB로 대체하여 추가한 뒤에 현재 값인 . 도 출력 문자열에 추가시켜줌 
                
                cnt = 0;    // 지금까지 누적된 X를 AAAA, BB로 대체하여 추가하였으므로 cnt를 초기화해 새로 X 누적 시작 
            }
            if(i == input.length -1) {    // 현재 index위치가 입력값의 마지막인 경우 남아있는 cnt값만큼을 출력해야하므로 홀수인지 확인하고 process 함수에 돌림
                
                if(cnt % 2 != 0) {
                    System.out.println("-1");
                    return;
                }
                process(cnt);
                cnt = 0;
            }
 
        }
        System.out.println(output);
    }
    static void process(int n) {    // 중간에 채워야하는 X의 개수가 주어지면 AAAA를 이용하여 출력 문자열에 최대한 채운 뒤 나머지 수만큼 BB를 이용하여 채움 
 
        int a = n / 4;
        int b = (n % 4/ 2;
        for(int j = 0; j < a; j++) {
            output = output + "AAAA";
        }
        for(int j = 0; j < b; j++) {
            output = output + "BB";
        }
 
    }
 
}
 
cs
반응형

'algorithm > 백준' 카테고리의 다른 글

백준 1380 Java  (0) 2021.07.31
백준 1247 Java  (0) 2021.07.30
백준 1331 Java  (0) 2021.07.28
백준 1085 Java  (0) 2021.07.28
백준 1316 Java  (0) 2021.07.27