🧑💻 [Python] 백준 1213 팰린드롬 만들기
Silver 3 - Dictionary
딕셔너리에, 각 알파벳과 알파벳의 개수를 넣는다
- key는 알파벳 | value에는 알파벳의 개수
알파벳 개수 중 홀수가 2개 이상이면, 팰린드롬을 만들 수 없다
- if sum([al % 2 for al in al_dict.values()]) > 1:
- 홀수 이면 al % 2 를 할 때 1이 나온다
- 반대로 짝수면 0이다
즉 팰린드롬이 되려면, 모든 알파벳의 개수가 짝수거나, 개수 하나가 홀 수 일 때에 팰린드롬을 만들 수 있다
for key, value in sorted(al_dict.items()): 을 통해서, 알파벳을 정렬한다
코드
flag = True
al_dict = {}
alp = input()
for a in alp:
if a in al_dict:
al_dict[a] += 1
else:
al_dict[a] = 1
if sum([al % 2 for al in al_dict.values()]) > 1:
flag = False
else:
answer, result, half = '', '', ''
for key, value in sorted(al_dict.items()):
result += key * (value // 2)
if value % 2 == 1:
half += key
answer = result + half + result[-1::-1]
if flag == False:
print("I'm Sorry Hansoo")
else:
print(answer)
- result 같은 경우, 팰린드롬의 앞 부분의 반
- half 는 팰린드롬의 중간 알파벳
- 팰린드롬에서의 알파벳의 개수가 짝수일 때, half는 빈칸이다
- 홀수 일 때에만 half 안에 알파벳이 들어간다
- result[-1::-1] 를 해서, 나머지 반을 결과 값에 넣어주는 것이다
'알고리즘 > 정렬' 카테고리의 다른 글
[Python] 백준 13904 - 과제 (0) | 2023.01.15 |
---|---|
[Python] 백준 1374 - 강의실 (0) | 2023.01.14 |
[Python] 백준 1931 - 회의실 배정 (0) | 2023.01.13 |
[Python] 백준 2437 저울 (1) | 2023.01.11 |
[Python] 백준 6068 시간 관리하기 (0) | 2023.01.09 |