Language/Python

[BAEKJOON]백준 1157번: 단어공부 파이썬

림밤빵 2021. 3. 4. 20:34
728x90

문제

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

 

입력

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

 

출력

첫째 줄에 이 단어에서 가장 많이 사용된 알파벳을 대문자로 출력한다. 단, 가장 많이 사용된 알파벳이 여러 개 존재하는 경우에는 ?를 출력한다.

 

코드

text = input().upper()
element = set(text)
cnt = []
val = []

for i in element:
    val.append(i)
    cnt.append(text.count(i))

if cnt.count(max(cnt)) > 1:
    print("?")
else:
    print(val[cnt.index(max(cnt))])

 

코드 실행 결과1
코드 실행 결과2

 

코드 설명

text에 입력값을 저장한다.

대소문자 구분을 하지 않으므로 upper() 함수를 통해 모두 대문자로 만들어 준다.

element는 set() 함수를 이용해 중복값을 제거 한 알파벳들만 저장해준다.

알파벳의 중복 횟수를 저장할 리스트 cnt를 정의 해준다.

알파벳을 저장할 리스트 val를 정의해준다.

(set은 index가 없으므로 index로 출력을 할 수 없기 때문)

text = input().upper()
element = set(text)
cnt = []
val = []

 

element의 각 요소들에 대하여 값을 저장하고, 중복 횟수를 저장한다.

val에 element를 저장한다.

cnt에는 중복 횟수를 저장한다.

count() 함수를 이용하여 text에서 중복된 횟수를 얻는다.

for i in element:
    val.append(i)
    cnt.append(text.count(i))

 

max(cnt)는 cnt에서 최댓값을 반환한다.

count() 함수를 이용해 최댓값이 1개보다 많은지 확인 후,

많다면 ?를 출력하고, 그렇지 않다면 해당 index에 있는 알파벳을 출력한다.

if cnt.count(max(cnt)) > 1:
    print("?")
else:
    print(val[cnt.index(max(cnt))])
728x90