가영이의 스토리

[백준/Python] 백준 1157번 단어 공부 본문

코딩연습장/백준

[백준/Python] 백준 1157번 단어 공부

gayomii 2023. 8. 25. 13:44

🏆백준 1157번 -  단어 공부

 

1157번: 단어 공부

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

www.acmicpc.net


✍️문제

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


정답

word = input().upper() # 대문자로 입력받기
word_list = list(set(word))
cnt = []

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

if cnt.count(max(cnt)) > 1:
    print('?')
else:
    print(word_list[cnt.index(max(cnt))]) # cnt가 가장 높은 인덱스의 word_list 추출

💫 해설 및 한줄평

word를 upper()을 통해 대문자로 입력받는다.

그리고 set로 만든 후 list로 구성해줘서 중복된 값이 없는 list로 만들어준다.

이후 word_list를 반복하여 cnt에 각 알파벳별로 몇개가 있는지 count한 수를 넣어준다.

 

이렇게 되면 다음과 같이 구성된다.word = abbccword_list = ['A', 'B', 'C']

cnt = [1, 2, 2]

 

그럼 이제 해야할건 cnt에서 가장 높은 수와 그 수를 가지는 인덱스를 word_list에서 출력하는것이다.

이때, max가 두개이상이라면 '?'를 출력해야한다.

 

따라서 cnt의 최댓값를 count한 후 1개 초과일때 ?를 출력하는 코드를 사용했다.

그 이외에는 cnt에서 max(cnt)의 인덱스값을 구한 후 word_list에 적용하여 출력하도록 하였다.

 

한참 들여다봤다 .. 갈수록 어려워진다 팟팅구리구리

 

 

 

 

 

 

 

Comments