반응형
리뷰
분명 더 최적화 하는 방법이 있겠지만... 노가다로 푼 것 같다.
문제 풀이
- 알파벳 대문자를 딕셔너리로 초기화 해준 뒤 문자열을 참조하여 각 알파벳 개수를 최신화 해준다.
- 딕셔너리의 value를 돌고 홀수인 값이 2개 이상일 경우를 체크해준다.
- 정답을 출력할 빈 문자열을 초기화 해주고 딕셔너리 value의 반만큼만 문자열을 더해준다.
- 이번엔 딕셔너리를 뒤집어서 남은 value만큼 문자열을 더해준다.
- 홀수가 있었을 경우 문자열의 가운데에 홀수 알파벳을 넣어준다, 문자열 출력
참고 사항
- 홀수가 두개 이상인 경우 팰린드롬을 만들 수 없다. 쏘리 한수
- 딕셔너리를 for문으로 초기화 했다면 굳이 정렬을 하지 않아도 자동으로 된다.
- 최종 문자열에 value를 더해줄때는 2로 나눈 몫만큼 추가해 줘야한다. (홀수 문자열 추가 방지)
정답 코드
# 백준 1213번 팰린드롬 만들기 파이썬
s = input()
dic = {chr(i): 0 for i in range(65, 91)}
for char in s:
dic[char] += 1
cnt = 0
hol = ''
for key, val in dic.items():
if val % 2:
cnt += 1
hol = key
if cnt >= 2:
print("I'm Sorry Hansoo")
else:
ans = ''
for key, val in dic.items():
if val >= 2:
ans += key * (val // 2)
for key, val in reversed(dic.items()):
ans += key * (val // 2)
if hol:
middle = len(ans) // 2
ans = ans[:middle] + hol + ans[middle:]
print(ans)
728x90
반응형
'알고리즘 공부 > 파이썬(Python)' 카테고리의 다른 글
백준 1012번 유기농 배추 파이썬 (1) | 2024.07.15 |
---|---|
SWEA 1979번 D2 어디에 단어가 들어갈 수 있을까 파이썬, C++ (0) | 2024.07.14 |
백준 1120번 문자열 파이썬 (0) | 2024.07.12 |
백준 2635번 수 이어가기 파이썬 (0) | 2024.07.11 |
백준 5635번 생일 파이썬 (0) | 2024.07.11 |