Coding Test/Python

백준 1213

dohem 2023. 6. 20. 23:40

https://www.acmicpc.net/problem/1213

 

1213번: 팰린드롬 만들기

첫째 줄에 문제의 정답을 출력한다. 만약 불가능할 때는 "I'm Sorry Hansoo"를 출력한다. 정답이 여러 개일 경우에는 사전순으로 앞서는 것을 출력한다.

www.acmicpc.net

풀이

alpha = list(input())
alpha.sort(reverse=True)
unique_alpha = list(set(alpha))
unique_alpha.sort(reverse=True)

odd_cnt = 0
odd_alpha = ''

final_str = ''

for a in unique_alpha:
    if alpha.count(a)%2 ==1: #홀수면
        odd_cnt +=1 #odd_cnt 저장
        
        odd_alpha = a #해당 알파벳 저장 
        final_str =a #최종 문자에 해당 알파벳 한개 저장
        
if odd_cnt >1:
    print("I","'",'m Sorry Hansoo', sep = '')
    
else: 
    for a in unique_alpha:
        if a ==odd_alpha:
            for _ in range((alpha.count(a)-1)//2):
                final_str = a+final_str+a
        else:
            for _ in range(alpha.count(a)//2):
                final_str = a+final_str+a
    print(final_str)

 

참고

 

1) 리스트를 유니크한값으로 된 리스트로 만드는 법

original_list = [1, 2, 2, 3, 3, 4, 5, 5]
unique_list = list(set(original_list))

print(unique_list)

 

[1, 2, 3, 4, 5]

2) 리스트 내림차순(디폴트는 오름차순)

my_list = [3, 1, 4, 2, 5]
my_list.sort(reverse=True)

print(my_list)

 

[5, 4, 3, 2, 1]

3) 리스트 요소 삭제

my_list = [1, 2, 3, 4, 5]
value_to_remove = 3

my_list.remove(value_to_remove)
print(my_list)

 

[1, 2, 4, 5]

 

4) 리스트 맨뒤에 요소 추가

my_list = [1, 2, 3]
new_element = 4

my_list.append(new_element)
print(my_list)

 

[1, 2, 3, 4]

5) 리스트 맨앞에 요소 추가

my_list = [2, 3, 4]
new_element = 1

my_list.insert(0, new_element)
print(my_list)

 

[1, 2, 3, 4]

6) 리스트에 있는 요소를 문자로 합치기

my_list = ['Hello', 'World', '!']

result = ''.join(my_list)
print(result)

 

HelloWorld!

7) 파이썬 문자열끼리 합칠 때 공백 없애는 법

print('a', 'b', 'c', sep='')

 

abc