코딩테스트/기초

백준 1157 단어공부 - python

math_tbro 2022. 1. 2. 20:23

출처: 

https://www.acmicpc.net/problem/1157

 

1157번: 단어 공부

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

www.acmicpc.net

풀이

word = input().upper()
unique_word = list(set(word))

cnt_list = []
for i in unique_word:
    cnt = word.count(i)
    cnt_list.append(cnt)
    
if cnt_list.count(max(cnt_list)) >= 2:
    print('?')

else :
    위치 = cnt_list.index(max(cnt_list))
    print(unique_word[위치])

 

안녕하세요 여러분

그냥 인사한번 해봤습니다.ㅋㅋ

 

이거 못풀었습니다.. 어렵네요.. 일단 upper개념이 약했고... set을 쓰는 생각도 못했고 위에 입력 과정이 빗나가니까 밑에도 주르륵 안되네요... 입출력이랑 기본개념이 이렇게 중요합니다..

 

틀렸으니까 자세히 풀이 하겠습니다.

풀이 시작하겠습니다.

 

1.

word = input().upper()
unique_word = list(set(word))

일단 word를 입력 받아오는데 문제에서는 어차피 대문자 소문자를 구분하지 않고 출력 또한 대문자로 출력해야하므로 upper()를 이용해 모두 대문자로 바꿔서 저장합니다.

그리고 중복되는 단어가 있으니 그것을 set으로 바꿧다가 다시 list로 바꿔서 찾고자 하는 단어들을 저장합니다..

 

2.

cnt_list = []
for i in unique_word:
    cnt = word.count(i)
    cnt_list.append(cnt)

다음 cnt_list = [] 빈공간 만들어주고

위에서 만든 유니크 워드를 하나하나 가져와서 word.count(i) 에 유니크한 단어의 개수를 세줍니다.

그렇게 센 숫자를 cnt_list 에 넣어줍니다.

 

3.

if cnt_list.count(max(cnt_list)) >= 2:
    print('?')

else :
    위치 = cnt_list.index(max(cnt_list))
    print(unique_word[위치])

마지막으로 cnt_list에서 가장 큰 숫자가 2개 이상이면 ? 로 출력한다

그리고 그게 아니라면

가장 개수가 많은 위치를 찾아준다음

cnt_list에 해당하는 unique_word를 프린트 해준다. 

'코딩테스트 > 기초' 카테고리의 다른 글

백준 5622 다이얼 - python  (0) 2022.01.03
백준 1152 단어의 개수  (0) 2022.01.02
백준 2675 문자열 반복 - python  (0) 2022.01.02
백준 10809 알파벳 찾기 - python  (0) 2022.01.02
백준 11720 숫자의 합 - python  (0) 2022.01.02