예외 처리를 먼저 생각해보자.
알파벳이 홀수인 게 2개 이상이면, 팰린드롬이 될 수 없다.
따라서 이때, I'm Sorry Hansoo"를 출력한다.
팰린드롬은 start, mid, end로 나눠서 구현할 수 있다.
start에는 // 2를 이용해서 현재 알파벳의 개수 나누기 2의, 몫이 들어간다.
mid에는 % 2를 이용해서 홀수 개수인 알파벳을 1개 넣어준다.
end는 start의 역순이다.
참고로 딕셔너리를 중간에 sort 해줬기 때문에,
조건 중 하나인 '사전순으로 앞서는 것을 출력'은 신경 쓰지 않아도 된다.
string = input()
dic = {}
for s in string:
dic[s] = 0
for s in string:
dic[s] += 1
count = 0
new_dic = sorted(dic)
# print(dic, new_dic)
for s in new_dic:
if dic[s] % 2 != 0:
count += 1
if count > 1:
print("I'm Sorry Hansoo")
break
else:
start = ''
mid = ''
for s in new_dic:
start += s * (dic[s] // 2)
mid += s * (dic[s] % 2)
print(start, end="")
print(mid, end="")
end = ''.join(reversed(start))
print(end)
처음에 "I'm Sorry Hansoo"가 아니라 "I'm Sorry Hansun"이라고 작성하는 바람에,
계속 "틀렸습니다"가 나왔다.
알고리즘에서 문제가 있는 줄 알고 멘붕에 빠졌었다.
나중에 오타가 있는 것을 발견하고, 사소한 부분을 잘 볼 것을 다짐하고 다짐했다.
'알고리즘 > 백준' 카테고리의 다른 글
[BOJ] [Python] 11047번 : 동전 0 (0) | 2021.07.27 |
---|---|
[BOJ] [Python] 11055번 : 가장 큰 증가 부분 수열 (1) | 2021.07.27 |
[BOJ] [Python] 2193번 : 이친수 (1) | 2021.07.27 |
[BOJ] [Python] 2156번 : 포도주 시식 (2) | 2021.07.27 |
[BOJ] [Python] 11726번 : 2xn 타일링 (1) | 2021.06.26 |