이번 문제는 간단해 보였지만, 내가 생각하기에는 조금 복잡하게 했어야 했다:
w = input()
w = w.lower()
w_list = list(w)
list_words = list(set(w))
num_words = []
for i in list_words:
num_words.append([w_list.count(i), i])
max_string = []
for i in range(len(num_words)):
if num_words[i][0] == max(num_words)[0]:
max_string.append(num_words[i][1])
if len(max_string) > 1:
print('?')
else:
print(max(num_words)[1].upper())
문자열을 입력하고, 이를 모두 소문자로 변환 시켜준다. 그 다음 이 단어를 하나는 평범한 리스트에 저장하고, 하나는 set()를 리스트에 저장해서 이 단어에 있는 단어들 하나하나만 확인할 수 있게 해준다.
다음으로는 num_words라는 리스트를 만들고, 여기에 [number of alphabet inside the string, the alphabet] 형식으로 리스트 안에 리스트를 저장한다.
입력된 문자 안에, 가장 많은 알파벳을 가진 단어를 max_string에 저장하게끔 하고, 이를 통해 만약 max_string 값이 1보다 크다는 것은 가장 많이 사용된 알파벳이 여러개 존재한다는 것이기 때문에 '?'를 출력하게끔 했고, 아니라면 그 해당 알파벳을 대문자로 출력하게끔 했다.
'알고리즘 테스트 > 백준 문제풀이 및 해설' 카테고리의 다른 글
<백준 문제풀이: 2908번> 파이썬 - 상수 (0) | 2020.11.16 |
---|---|
<백준 문제풀이: 1152번> 파이썬 - 단어의 개수 (0) | 2020.11.15 |
<백준 문제풀이: 2675번> 파이썬 - 문자열 반복 (0) | 2020.11.13 |
<백준 문제풀이: 10809번> 파이썬 - 알파벳 찾기 (0) | 2020.11.12 |
<백준 문제풀이: 11720번> 파이썬 - 숫자의 합 (0) | 2020.11.11 |