[백준알고리즘/python3,파이썬] 1157번 단어 공부 문제 및 해결 소스코드

백준알고리즘 2020.12.18 댓글 임통끼
728x90

 

 


백준알고리즘 / No.1157 / 단어공부 / python3, 파이썬


 

문제

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

 

입력

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

 

출력

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

 


해결 코드

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
import collections
 
test = input().upper()
appy_list = []
count = collections.Counter(test)
max_value = max(list(count.values()))
max1 = count.most_common(2)
 
if len(max1) == 1 :
    print(test)
else :
    if max1[0][1== max1[1][1] :
        print("?")
    else :
        print(max1[0][0])
cs

 

line 3 : 알파벳이 대문자로 들어온다는게 명시되어 있으니, 혹시 소문자로 들어올 수 있는 경우를 대비해 upper()을 통해서 대문자로 변환

line 5 : Counter를 통해서 입력받은 텍스트에서 각각의 문자열의 개수를 카운트한다.

line 6 : count한 값을 list화하여 그 중 가장 큰 값을 추출해 max_value 변수에 저장한다.

line 7 : 가장 많이 사용된 알파벳이 복수인 경우를 대비해, 가장 높은 값을 기준으로 2개의 데이터를 추출

line 9 : 해당 if문은 만약 max1의 길이가 1이면 해당 값을 출력하고, 그게 아니라 복수인 경우에는 물음표를 출력하도록 하는 부분이다.

 


결과

이 알고리즘을 풀면서 collections이라는 모듈을 처음 알게된 것 같다.  왠일로 한번에 맞춘건지 신기하다..^^..

 

 

 

반응형

댓글