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 |
반응형