https://www.acmicpc.net/problem/1157
1157번: 단어 공부
알파벳 대소문자로 된 단어가 주어지면, 이 단어에서 가장 많이 사용된 알파벳이 무엇인지 알아내는 프로그램을 작성하시오. 단, 대문자와 소문자를 구분하지 않는다.
www.acmicpc.net
문제
알파벳 대소문자로 된 단어가 주어지면, 이 단어에서 가장 많이 사용된 알파벳이 무엇인지 알아내는 프로그램을 작성하시오. 단, 대문자와 소문자를 구분하지 않는다.
입력
첫째 줄에 알파벳 대소문자로 이루어진 단어가 주어진다. 주어지는 단어의 길이는 1,000,000을 넘지 않는다.
출력
첫째 줄에 이 단어에서 가장 많이 사용된 알파벳을 대문자로 출력한다. 단, 가장 많이 사용된 알파벳이 여러 개 존재하는 경우에는 ?를 출력한다.
코드 정답
word = input().lower()
word_list = list(set(word))
cnt = []
for i in word_list:
count = word.count(i)
cnt.append(count)
if cnt.count(max(cnt)) >= 2:
print("?")
else:
print(word_list[(cnt.index(max(cnt)))].upper())
풀이
1행 : 문자를 입력받아 lower() 함수를 이용해 대문자들을 전부 소문자로 바꿔준다. 만일 대문자로 하고 싶다면 upper() 함수를 사용하면 된다.
2행 : word 에 입력되어있는 문자를 set() 함수를 이용하여 중복을 제거한 후 list() 함수를 이용하여 리스트 형식으로 묶는다.
3행 : 변수 cnt 를 리스트 형식으로 초기화한다.
5행 : i 가 word_list 에 저장된 값을 따라갈 때까지 6~7행을 반복한다.
6행 : count() 함수를 사용하여 i 에 저장된 값이 word에 몇 개나 있는지 파악한다. 파악한 갯수를 count 에 저장한다.
7행 : append() 함수를 이용해 count 에 있는 값을 cnt 변수 리스트에 추가한다.
9행 : 만약 cnt 변수 리스트에 가장 큰 값을 max 로 알아낸 값이 2개 이상이라면 10행을 실행한다.
10행 : ? 를 출력한다.
11행 : 9행의 경우의 수가 아닐 경우 12행을 실행한다.
12행 : cnt 변수 리스트에 가장 큰 값을 max 로 알아낸 후 word_list[cnt] 에 저장된 값을 색출한다. 이후 upper() 함수를 통해 대문자로 변환하여 출력한다.
'BaekJoon > 단계별로 풀어보기' 카테고리의 다른 글
[백준] 문자열 - 2908번 (Python) (0) | 2022.11.28 |
---|---|
[백준] 문자열 - 1152번 (Python) (0) | 2022.11.28 |
[백준] 문자열 - 10809번 (Python) (0) | 2022.11.25 |
[백준] 문자열 - 11720번 (Python) (0) | 2022.11.25 |
[백준] 문자열 - 11654번 (Python) (0) | 2022.11.25 |