[알고리즘]/백준

자바 - 구현 - 백준 1213 팰린드롬 만들기

broship 2021. 3. 11. 12:46

문제


 

 

 

 

 

 

 

 

문제해결


import java.util.Scanner;

public class B1213 {

	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		String input = sc.next();
		int size = input.length();
		
		int[] alp = new int[26];
		for(int i=0;i<size;i++)
			alp[input.charAt(i)-'A']++;
		
		int cnt = 0;
		int center = 0;
		for(int i=0;i<26;i++)
			if(alp[i]%2!=0) {
				center = i;
				cnt++;
			}
		
		if(cnt>1 || (cnt==1 && size%2==0)) {
			System.out.print("I'm Sorry Hansoo");
			return;
		}
		
		StringBuffer result = new StringBuffer();
		for(int i=0;i<26;i++)
			for(int j=0;j<alp[i]/2;j++)
				result.append((char)(i+'A'));
		StringBuffer tmp = new StringBuffer(result.toString());
		if(cnt==1) result.append((char)(center+'A'));
		System.out.println(result.toString()+tmp.reverse());
	}
}

1. 각 알파벳 갯수를 구한다

2. 갯수가 홀수인 알파벳은 0이거나 1이어야 한다

3. 1일 경우 문자열 길이는 홀수여야 되고 해당 알파벳은 무조건 가운데에 있어야 한다

4. 먼저 알파벳 순서대로 출력, 가운데 문자 출력, 뒤집은 알파벳을 출력하면 된다