이름을 주고 그걸로 팰린드롬을 만들 수 있다면 조건에 맞게 만들어 출력하는 문제다.


팰린드롬은 중간을 기준으로 양쪽에 같은 문자가 있어야 하므로 


카운팅 소트 한 다음 홀수개인 알파벳이 두개 이상이라면 I'm Sorry Hansoo를 출력하고 아니면


팰린드롬을 만들어 출력한다. 팰린드롬의 왼쪽 절반이 알파벳 오름차순으로 출력해야 한다.


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
#include <stdio.h>
char s[52];
int cnt[26];
 
void _print(int d) {
    if (d == 26) {
        for (int i = 0; i < 26; i++if (cnt[i] % 2
            printf("%c", i + 'A');
        return;
    }
    for (int i = 0; i < cnt[d] / 2; i++
        printf("%c", d + 'A');
    _print(d + 1);
    for (int i = 0; i < cnt[d] / 2; i++)
        printf("%c", d + 'A');
}
 
int main() {
    scanf("%s", s);
    int i = 0, f = 0;
    for (; s[i]; i++) cnt[s[i] - 'A']++;
    for (i = 0; i < 26; i++if (cnt[i] % 2) f++;
    if (f > 1printf("I'm Sorry Hansoo");
    else _print(0);
    return 0;
}
cs


'BOJ' 카테고리의 다른 글

15685 드래곤 커브  (0) 2018.08.29
2615 오목  (0) 2018.04.04
14868 문명  (0) 2018.04.04
2887 행성 터널  (0) 2018.04.04
6497 전력난  (0) 2018.04.04

+ Recent posts