본문 바로가기
코딩테스트 문제풀이(Python)

백준 1157번 문제풀이 (파이썬)

by chanfficial 2022. 5. 29.

1157. 단어 공부

 

 

알파벳 대소문자로 된 단어가 주어지면, 이 단어에서 가장 많이 사용된 알파벳이 무엇인지 알아내는 프로그램을 작성하시오. 단, 대문자와 소문자를 구분하지 않는다.

 

 

입력 : 첫째 줄에 알파벳 대소문자로 이루어진 단어가 주어진다. 주어지는 단어의 길이는 1,000,000을 넘지 않는다.

출력 : 첫째 줄에 이 단어에서 가장 많이 사용된 알파벳을 대문자로 출력한다.

          단, 가장 많이 사용된 알파벳이 여러 개 존재하는 경우에는 ?를 출력한다.

 

 

ex)

입력1 :

Mississipi

출력1 :

?

 

 

입력2 :

baaa

출력2 :

A

 

 

 

 

 

풀이

word = input().lower()
word_list = list(set(word))
cnt = []

for i in word_list:
    count = word.count(i)
    cnt.append(count)

if cnt.count(max(cnt)) >= 2:
    print('?')
else:
    print(word_list[(cnt.index(max(cnt)))].upper())

- 대소문자를 구분하지 않기 위해 단어 word를 입력받고 lower()를 사용하여 모두 소문자로 만들어준 다음, 단어 word에서 set()를 사용해 중복된 단어를 제거한 word_list 를 생성해주었다.

두 번째로는 word_list 의 전체 범위 안에서 요소(= 단어) i 의 개수를 count 변수에 할당하여 cnt 리스트에 추가했다.

그리고 조건문을 사용하여 cnt 리스트에서 가장 많은 문자의 개수가 2개 이상이면 ? 를 출력하고

그렇지 않으면 word_list 의, cnt 리스트에서 가장 큰 값의 인덱스 값 요소를 upper()를 사용하여 대문자로 바꾸어 출력하게 했다.