[Silver III]
https://www.acmicpc.net/problem/1213
풀이
- 팰린드롬이 되려면 개수가 홀수인 알파벳이 1개 이하여야 한다. 2개 이상일 경우 팰린드롬을 만들 수 없다.
1.1 만약 1개일 경우, 입력받은 리스트에서 개수가 홀수인 알파벳을 따로 빼 저장한다. - 팰린드롬을 만들기 위해 사전순으로 알파벳을 정렬한 후, index를 2씩 증가시키며 알파벳을 추출한다. (자연스럽게 사전순으로 출력)
- [(2)를 통해 만든 앞의 절반 + (1-1)에서 뺀 알파벳 + (2)에 reverse를 적용시킨 리스트]를 모두 더하여 팰린드롬을 완성시킨다.
from collections import deque
inputList = list(input())
resultList = list()
d = deque()
cnt = 0
tempAlphabet = ''
inputList.sort()
for i in range(ord('A'), ord('Z') + 1):
if inputList.count(chr(i)) % 2 == 1:
cnt += 1
index = inputList.index(chr(i))
tempAlphabet = inputList.pop(index)
if cnt >= 2:
print("I'm Sorry Hansoo", end="")
quit()
for i in range(0, len(inputList), 2):
resultList.append(inputList[i])
reverseList = resultList.copy()
reverseList.reverse()
resultList.append(tempAlphabet)
resultList += reverseList
print("".join(resultList), end="")
'백준 알고리즘 > Python' 카테고리의 다른 글
[백준] 1260. DFS와 BFS - Python (0) | 2023.09.18 |
---|---|
[백준] 14502. 연구소 - Python (0) | 2023.09.17 |
[백준] 10808. 알파벳 개수 - Python (0) | 2023.09.04 |
[백준] 1158. 요세푸스 문제 - Python (0) | 2023.09.04 |
[백준] 2839. 설탕 배달 - Python (0) | 2023.09.04 |