이름을 주고 그걸로 팰린드롬을 만들 수 있다면 조건에 맞게 만들어 출력하는 문제다.
팰린드롬은 중간을 기준으로 양쪽에 같은 문자가 있어야 하므로
카운팅 소트 한 다음 홀수개인 알파벳이 두개 이상이라면 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 > 1) printf("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 |