## solution
알파벳 대소문자로 된 단어가 주어지면, 이 단어에서 가장 많이 사용된 알파벳이 무엇인지 알아내는 프로그램을 작성하기. 대소문자를 구별하지 않으며 대문자로 출력해야한다.
많이 사용된 알파벳이 여러개일 경우 ?를 출력한다.
## CODE
```python
input_str = input().upper()
tmp_dict = {}
for tmp in input_str:
tmp_dict[tmp] = tmp_dict.get(tmp,0) + 1
max_value = max(tmp_dict.values())
max_keys = [k for k,v in tmp_dict.items() if v==max_value]
if len(max_keys) == 1:
print(''.join(max_keys))
else:
print('?')
```
제출하여 정답처리 받은것.
```python
input_str = input().upper()
set_str = list(set(input_str))
tmp_dict = {}
for tmp in set_str:
tmp_dict.update({tmp:input_str.count(tmp)})
value_list = list(tmp_dict.values())
value_list.sort()
if value_list[-1] == value_list[-2]:
print('?')
else:
reversed_dict = {v:k for k,v in tmp_dict.items()}
print(reversed_dict.get(value_list[-1]))
```
처음에 틀렸던 풀이.
일단 dict 만들때 set을 사용할 필요가 없다. 자주 사용하지 않다보니 깔끔하지 않았다. 그리고 value_list[-1] == value_list[-2] 이렇게 판단하면 한글자가 들어올 경우 indexerror가 발생한다.
이 풀이에서도 value값을 모아놓은 리스트에서 최대값이 하나인지 판별하고, 아닌경우 ? 를 출력했다면 정답처리 되었을것이다.
0 댓글