https://www.acmicpc.net/problem/1343
1. 아이디어
사전순으로 앞서려면 AAAA를 최대한 일찍 사용해야 한다.
2. 문제풀이
StringTokenizer로 '.'을 구분자로 설정해서 파싱을 먼저 했다. 이후 토큰들에 대해 '.'이면 넘어가고 'X'의 뭉치면 AAAA를 먼저 적용해서 4로 나눈 몫만큼 먼저 쓰고 4로 나눈 나머지만큼 B를 사용했다. 이때 AAAA와 BB 둘 다 문자가 짝수개이므로 'X'의 뭉치의 길이가 홀수면 불가능한 케이스다.
3. 코드
import java.io.*;
import java.util.*;
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();
StringTokenizer st = new StringTokenizer(br.readLine(), ".", true);
boolean flag = true;
while (st.hasMoreTokens()) {
String token = st.nextToken();
int len = token.length();
if (token.equals(".")) {
sb.append(token);
continue;
}
if (len % 2 == 1) {
flag = false;
break;
}
for (int i = 0; i < len / 4; i++) {
sb.append("AAAA");
}
for (int i = 0; i < len % 4; i++) {
sb.append("B");
}
}
if (flag) {
bw.write(sb.toString());
bw.flush();
} else {
System.out.println(-1);
}
}
}
4. 후기
'코딩테스트 준비 > 백준' 카테고리의 다른 글
[백준] 9627번 - 문장 [Java] (0) | 2025.02.12 |
---|---|
[백준] 16463번 - 13일의 금요일 [Java] (0) | 2025.02.12 |
[백준] 19236번 - 청소년 상어 [Java] (0) | 2025.02.12 |
[백준] 9935번 - 문자열 폭발 [Java] (0) | 2025.02.12 |
[백준] 2504번 - 괄호의 값 [Java] (0) | 2025.02.12 |