[1157] 백준 문제풀이 - 단어 공부
https://www.acmicpc.net/problem/1157
문제
알파벳 대소문자로 된 단어가 주어지면, 이 단어에서 가장 많이 사용된 알파벳이 무엇인지 알아내는 프로그램을 작성하시오. 단, 대문자와 소문자를 구분하지 않는다.
입력
첫째 줄에 알파벳 대소문자로 이루어진 단어가 주어진다. 주어지는 단어의 길이는 1,000,000을 넘지 않는다.
출력
첫째 줄에 이 단어에서 가장 많이 사용된 알파벳을 대문자로 출력한다. 단, 가장 많이 사용된 알파벳이 여러 개 존재하는 경우에는 ?를 출력한다.
Python Code
내장함수의 사용방법에 대해서 잘 알고, 활용을 할 줄 알아야하는 문제였다.
1
2
3
4
5
6
7
8
9
10
11
12
word = list(str(input().upper())) # 받아온 문자열을 전부 대문자로 바꾸고 리스트형에 집어넣음
filter_word = list(set(word))
cnt = []
for filter_cnt in filter_word: # set으로 중복값을 제거한 리스트의 요소를 하나씩 꺼내옴
count = word.count(filter_cnt)
cnt.append(count)
if cnt.count(max(cnt)) > 1:
print("?")
else:
print(filter_word[cnt.index(max(cnt))])
코드의 진행은 다음과 같다.
- 받아온 문자열을 전부 대문자(
upper
)로 바꾸고list
형에 저장함 set
함수를 활용해 받아온 문자열의 중복값을 제거하고 새 리스트에 저장함- 새 리스트
filter_word
의 요소들을for
문을 활용해셔 하나씩 사용한다. 3
번의 요소와 원래word
리스트를count
함수를 이용해word
리스트의 중복값의 갯수를 세준다.- 세 준 중복값의 갯수들은 각각
cnt
라는 빈 리스트에 저장한다. cnt
리스트의max
함수의 값이1 이상
일 경우?
를 출력하고 아닐 경우에는 최대 중복값을 출력한다.
댓글남기기