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 |
'알고리즘 풀이 > 백준' 카테고리의 다른 글
[백준][Java] 2493번 탑 (스택, 구현) #2 (0) | 2021.09.27 |
---|---|
★ [백준][Java] 5525번 IOIOI (문자열, 누적합) (0) | 2021.09.24 |
★ [백준][Java] 17609번 회문 (문자열) (0) | 2021.09.24 |
★ [백준][Java] 14425번 문자열 집합 (문자열, HashMap) (0) | 2021.09.23 |
[백준][Java] 1254번 팰린드롬 만들기 (문자열, 완전탐색) (0) | 2021.09.23 |