Python

[Python] 백준 1157(단어 공부)

땅콩새싹 2021. 8. 2. 22:07
반응형

백준 1157(단어 공부)

 


 

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

 

1157번: 단어 공부

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

www.acmicpc.net

 

코드설명

1
2
3
4
5
6
7
8
9
10
11
12
13
words = input().upper()
unique_words = list(set(words))
 
cnt_list = []
for i in unique_words:
    cnt = words.count(i)
    cnt_list.append(cnt)
 
if cnt_list.count(max(cnt_list)) > 1:
    print('?')
else:
    max_index = cnt_list.index(max(cnt_list))
    print(unique_words[max_index])
cs

words라는 변수에 입력받을 문자를 모두 대문자로 바꾸어 저장합니다. 그리고 unique_words에는 set()함수를 사용해 중복된 알파벳을 제외하고 입력 받은 단어에 사용된 알파벳을 list 형태로 저장합니다. set()함수를 사용하면 중복된 값을 제거하고 남은 문자들을 랜덤한 순서로 저장하기 때문에 순서가 중요한 문제에서는 주의를 할 필요가 있을 거 같습니다. 지금 이 문제에서는 index를 반환해 사용할 것이기 때문에 문제가 되지 않습니다. 알파벳의 개수를 저장해 줄 list 'cnt_list'를 만들어 주고 반복문을 통해 unique_words list에 저장된 알파벳을 한 개씩 불러오며 입력 받은 단어에서 알파벳이 몇 번이나 쓰였는 지 count() 함수를 사용해 세주고 cnt 변수에 저장합니다. cnt에 저장된 수를 append() 함수로 cnt_list에 하나씩 저장해줍니다. 그리고 만약 cnt_list에 저장된 최댓값이 1보다 많을 경우(제일 많이 사용된 알파벳 개수가 1개 이상일 때) '?'를 출력해 줍니다. 그리고 제일 많이 사용된 알파벳을 출력하기 위해(제일 많이 사용된 알파벳 개수가 1개 일 때) cnt_list에서 max() 함수로 최댓값을 찾고 그 최댓값 index를 반환해 max_index 변수에 저장하고 unique_words에 그 인덱스 번호를 사용해 알파벳을 출력해줍니다.

 

실행결과

반응형

'Python' 카테고리의 다른 글

[Python] 백준 1546(평균)  (0) 2021.08.31
[Python] 백준 2839(설탕 배달)  (0) 2021.08.02
[Python] 백준 8958(OX퀴즈)  (0) 2021.07.29
[Python] 백준 4344(평균은 넘겠지)  (0) 2021.07.29
[Python] 백준 1110(더하기 사이클)  (0) 2021.07.25