728x90
반응형
https://www.acmicpc.net/problem/1213
데칼코마니가 되는 문자를 만들기다.
문자열을 입력받은 후,
알파벳당 문자열에 쓰인 횟수를 기록한다.
팰린드롬이 되기 위해서는 모든 알파벳이 짝수개거나, 하나의 알파벳만 홀수개여야 한다.
(-하나의 알파벳만 홀수개인 경우, 해당 알파벳을 가장 중앙에 위치시켜야 함)
팰린드롬을 만들 수 있게 판별되었다면
StringBuffer의 insert메소드를 이용해여 문자열의 중앙에 알파벳을 차곡차곡 쌓도록 하고,
홀수개를 가진 알파벳의 문자 하나는 가장 중앙에 두게 한다.
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class P1213 {
static int[] arr = new int[26];
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringBuffer name = new StringBuffer();
name.append(br.readLine());
for (int i = 0; i < name.length(); i++) {
arr[name.charAt(i) - 'A']++;
}
int count = 0;
int single_alphabet = -1;
for (int i = 0; i < 26; i++) {
if (arr[i] % 2 != 0) {
count++;
single_alphabet = i;
if (count > 1) {
System.out.println("I'm Sorry Hansoo");
return;
}
}
}
StringBuffer sb = new StringBuffer();
int middle = 0;
for (int i = 0; i < 26; i++) {
if (i == single_alphabet) {
for (int j = 0; j < arr[i] - 1; j++) {
sb.insert(middle, (char) (i + 'A'));
}
} else {
for (int j = 0; j < arr[i]; j++) {
sb.insert(middle, (char) (i + 'A'));
}
}
middle = sb.length() / 2;
}
if (single_alphabet != -1) {
sb.insert(middle, (char) (single_alphabet + 'A'));
}
System.out.println(sb);
}
}
728x90
반응형
'코딩 > 백준-자바' 카테고리의 다른 글
[자바] 백준 10819번: 차이를 최대로 (0) | 2023.01.12 |
---|---|
[자바] 백준 2309번: 일곱 난쟁이 (0) | 2023.01.11 |
[자바] 백준 7562번: 나이트의 이동 (0) | 2023.01.09 |
[자바] 8979번: 올림픽 (0) | 2023.01.09 |
[자바] 백준 1110번: 더하기 사이클 (0) | 2023.01.09 |
댓글