728x90
반응형
https://www.acmicpc.net/problem/1213
1213번: 팰린드롬 만들기
첫째 줄에 문제의 정답을 출력한다. 만약 불가능할 때는 "I'm Sorry Hansoo"를 출력한다. 정답이 여러 개일 경우에는 사전순으로 앞서는 것을 출력한다.
www.acmicpc.net
문제해결
- 같은 문자끼리 짝지어서 대칭시켜 정렬시키면 된다.
- 문자 개수를 확인해서 홀수인 것이 두개 이상 나타나면 만들 수 없다는 것을 쉽게 알 수 있다.
- 홀수인 것은 가운데로 하나 들어가기 때문에 제거하고 변수로 저장한다.
- 정렬시킨 다음에 두칸씩 움직여 반복되는 문자열을 만들어 답을 구한다.
CODE
from collections import Counter
import sys
input = sys.stdin.readline
word = [s for s in str(input().rstrip())]
memo = Counter(word)
cnt = 0
for i in memo:
if memo[i]%2 == 1:
cnt += 1
center = i
if cnt>1:
print("I'm sorry Hansoo")
elif len(word)%2 ==1:
word.sort()
word.remove(center)
ans =''
for i in range(0,len(word),2):
ans += word[i]
ans = ans + str(center) + ans[::-1]
print(ans)
else:
word.sort()
ans = ''
for i in range(0,len(word),2):
ans += word[i]
ans = ans + ans[::-1]
print(ans)
728x90
반응형
'알고리즘 > [python] 백준 BOJ' 카테고리의 다른 글
[python] 백준 2011 암호코드 (0) | 2023.03.14 |
---|---|
[python] 백준 14442 벽 부수고 이동하기 2 (1) | 2023.03.14 |
[python] 백준 1965 상자넣기 (0) | 2023.03.12 |
[python] 백준 1915 가장 큰 정사각형 (0) | 2023.03.12 |
[python] 백준 2437 저울 (0) | 2023.03.11 |
댓글