사용 언어: Java
- 구상
- 구현
import java.util.*;
import java.lang.*;
import java.io.*;
public class Main {
//팰린드롬 결과를 저장하는 문자열
public static StringBuffer front = new StringBuffer();
public static StringBuffer mid = new StringBuffer();
public static StringBuffer back = new StringBuffer();
//알파벳마다의 갯수를 저장하는 배열
public static int[] alpha = new int[26];
public static void main(String[] args) throws Exception {
Scanner s = new Scanner(System.in);
//문자열 입력 받기
String str = s.next();
//문자열에 알파벳 각각 몇 개 있는지 세기
for (int i = 0; i < str.length(); i++) {
//아스키 코드를 이용하여 알파벳 갯수 세기
int idx = str.charAt(i) - 'A';
alpha[idx]++;
}
/*알파벳 중 홀수개를 가진 알파벳 갯수 세기
(1개 이상이면 팰린드롬 불가)*/
int ODD = 0;
for (int i = 0; i < alpha.length; i++) {
if (alpha[i] % 2 != 0)
ODD++;
}
int num = 0;
/*홀수개인 알파벳이 1개 이상이면 팰린드롬 불가이므로
해당 문구 출력*/
if (ODD > 1)
System.out.println("I'm Sorry Hansoo");
else {
for (int i = 0 ; i < alpha.length; i++) {
/*홀수개인 알파벳이라면 mid에 1개를 넣고
나머지는 front, back에 나눠서 넣기*/
if (alpha[i] % 2 == 1) {
num = i;
mid.append((char)(num+65));
alpha[i]--;
while (alpha[i] != 0) {
front.append((char)(i + 65));
alpha[i]--;
back.append((char)(i+65));
alpha[i]--;
}
}
//0이 아닌 짝수개의 알파벳은 front, back에 나눠 넣기
else if (alpha[i] != 0){
while (alpha[i] != 0) {
front.append((char)(i + 65));
alpha[i]--;
back.append((char)(i+65));
alpha[i]--;
}
}
else
continue;
}
}
//출력 (StringBuffer이므로 String으로 변환하기)
System.out.print(front.toString() + mid.toString() + back.reverse().toString());
}
}