Hi
[백준/Python] 1213. 팰린드롬 만들기 본문
https://www.acmicpc.net/problem/1213
팰린드롬은 대칭 형태의 문자열이기 때문에 홀수개의 문자가 1개보다 많으면 안된다.
그래서 딕셔너리의 값이 홀수일 경우를 세서 2 이상이면 종료시켰다.
처음에는 빈 문자열 두개에 문자를 넣고 뒷부분이 될 문자열만 역순으로 정렬하려고 했는데
sorted로 정렬해야하니 문자열 → 리스트 → 문자열 순서로 정렬되어서 마음에 안들었다.
그래서 그냥 앞 부분이 될 빈 문자열 하나와 뒷 부분이 될 빈 리스트 하나에 각각 문자를 넣었다.
딕셔너리 값이 1인 경우에도 빈 문자열에 추가하였다.
이후에 뒷부분 리스트는 역순으로 정렬해서 문자열로 만들었다.
from collections import defaultdict
text = input()
name = sorted(text)
word = defaultdict(int)
for n in name:
word[n] += 1
cnt = 0
for c in word.values():
if c % 2 == 1:
cnt += 1
if cnt >= 2:
print("I'm Sorry Hansoo")
exit()
ans = ""
we = []
plus = ""
for w in sorted(word.keys()):
while word[w] > 0:
if word[w] == 1 and plus == "":
plus += w
word[w] -= 1
else:
ans += w
we.append(w)
word[w] -= 2
we.sort(reverse=True)
wer = "".join(we)
answer = ans + plus + wer
print(answer)'Algorithm > Baekjoon' 카테고리의 다른 글
| [백준/Python] 11725. 트리의 부모 찾기 (0) | 2025.03.27 |
|---|---|
| [백준/Python] 19949. 영재의 시험 (0) | 2025.03.15 |
| [백준/Python] 1149. RGB 거리 (2) | 2025.03.12 |
| [백준/Python]11048. 이동하기 (0) | 2025.03.03 |
| [백준/Python] 20920. 영단어 암기는 괴로워 (0) | 2025.01.14 |