본문 바로가기

Programming/ACMICPC

ACMICPC 1213 팰린드롬 만들기

https://www.acmicpc.net/problem/1213



문제

임한수와 임문빈은 서로 사랑하는 사이이다.

임한수는 세상에서 팰린드롬인 문자열을 너무 좋아하기 때문에, 

둘의 백일을 기념해서 임문빈은 팰린드롬을 선물해주려고 한다.

임문빈은 임한수의 영어 이름으로 팰린드롬을 만드려고 하는데,

 임한수의 영어 이름의 알파벳 순서를 적절히 바꿔서 팰린드롬을 만드려고 한다.

임문빈을 도와 임한수의 영어 이름을 팰린드롬으로 바꾸는 프로그램을 작성하시오.

입력

첫째 줄에 임한수의 영어 이름이 있다. 알파벳 대문자로만 된 최대 50글자이다.

출력

첫째 줄에 문제의 정답을 출력한다. 

만약 불가능할 때는 "I'm Sorry Hansoo"를 출력한다. 

정답이 여러 개일 경우에는 사전순으로 앞서는 것을 출력한다.


팰린드롬(palindrome)?

앞에서 읽으나 뒤에서 읽으나 같은 글귀라고 한다. '소주만병만주소' 같은거..


일단 주어진 입력이 팰린드롬이 가능한지 아닌지 여부부터 판단하고,

가능 할 경우에만 팰린드롬을 만들어주도록 코드를 짜봤다.


중요한건 입력값의 길이가 짝수냐, 홀수냐!

짝수일경우 모든 알파벳이 짝수개 들어가야할테고,

홀수라면 하나의 알파벳만은 홀수개여도 팰린드롬을 만들 수 있을테니까.


사전순으로 가장 앞에 있는 팰린드롬을 만들라는데, 이건 A부터 시작해서 팰린드롬을 

만들도록 코드를 짜놨기 때문에 그다지 큰 문제는 되지 않았다.


1학년때 아스키 코드를 사용해서 입력을 간단히 해석하는 모습을 보고 좋은 방법이라 

생각했는데, 이번 기회에 쓸 수 있었다.

alphabet[ord(string[x])-65] += 1 이런 식으로... 

ord()는 ordinal의 준말로 파이썬에서 chr()의 반대로 string to ascii 값으로 

바꿔주는 함수라고 한다.



'Programming > ACMICPC' 카테고리의 다른 글

ACMICPC 10943 랜덤 게임~  (0) 2015.09.11
ACMICPC 1267 핸드폰 요금  (0) 2015.08.28
ACMICPC 2902 KMP는 왜 KMP일까?  (0) 2015.08.19
ACMICPC 2530 인공지능 시계  (0) 2015.08.18
ACMICPC 1373 2진수 8진수  (0) 2015.08.18