알고리즘 풀이/백준

[백준][Java] 1213번 팰린드롬 만들기(문자열, 구현)

배게 2021. 9. 24. 06:15
728x90

그냥 배열로 해도 되는 거였음..

인덱스 0을 A로 25를 Z로 해서 풀면됨

홀수는 A~Z의 대문자 중 단 1개만 있어야함

이 기믹만 알면 어떻게든 풀림

 

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
59
60
61
62
63
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.HashMap;
import java.util.Map;
 
 
public class Main {
        
    private static BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
    private static BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
    
    static char[] alp = {'A','B','C','D','E','F','G','H','I','J'
            ,'K','L','M','N','O','P','Q','R','S','T','U','V','W'
            ,'X','Y','Z'};
    
    public static void main(String[] args) throws IOException{
        char[] input = br.readLine().toCharArray();
        Map<Character, Integer> hm = new HashMap<>();
        
        for (char c : input) {
            hm.put(c, hm.getOrDefault(c, 0)+1);
        }
        
        StringBuilder sb = new StringBuilder();
        char cent = ' ';
        for (char c : alp) {
            if(hm.getOrDefault(c,0)%2==1) {
                if(cent != ' ') {
                    System.out.println("I'm Sorry Hansoo");
                    return ;
                }
                else {
                    cent = c;
                }
            }
            for (int j=0; j<hm.getOrDefault(c,0)/2; j++) {
                sb.append(c);
            }
        }
        if(cent!=' ')
            sb.append(cent);
        
        for (int i=alp.length-1; i>=0; i--) {
            for (int j=0; j<hm.getOrDefault(alp[i],0)/2; j++) {
                sb.append(alp[i]);
            }
        }
        
        
        bw.write(sb.toString());
        bw.flush();
        bw.close();
    }
    
//    private static int stoi(String input) {
//        return Integer.parseInt(input);
//    }
    
}
 
cs