반응형
[Bronze I] 단어 공부 - 1157
성능 요약
메모리: 33212 KB, 시간: 80 ms
분류
구현, 문자열
문제 설명
알파벳 대소문자로 된 단어가 주어지면, 이 단어에서 가장 많이 사용된 알파벳이 무엇인지 알아내는 프로그램을 작성하시오. 단, 대문자와 소문자를 구분하지 않는다.
입력
첫째 줄에 알파벳 대소문자로 이루어진 단어가 주어진다. 주어지는 단어의 길이는 1,000,000을 넘지 않는다.
출력
첫째 줄에 이 단어에서 가장 많이 사용된 알파벳을 대문자로 출력한다. 단, 가장 많이 사용된 알파벳이 여러 개 존재하는 경우에는 ?를 출력한다.
풀이
개인적으로 어렵다고 느꼈던 문제였다. 처음 접근을 Dictionary 를 활용하여 문제를 해결하려고 하였으나, 동일한 글자 개수를 체크하는 부분에서 많이 헤맸다.
리스트를 활용한 풀이
더보기
S = input().upper()
unique_S = list(set(S)) # 집합을 이용하여 중복 제거
cnt_list = [] # 글자 갯수 카운트 저장할 리스트
for i in unique_S :
cnt = S.count(i) # cnt : 글자 수
cnt_list.append(cnt) # cnt를 list에 저장
# cnt_list 에 가장 많이 등장한 글자 수가 동일한 글자가 2개 이상이면 ? 리턴
if cnt_list.count(max(cnt_list)) > 1 :
print("?")
# 글자 수가 가장 많이 등장한 수를 찾아내어 해당하는 글자를 리턴
else :
max_index = cnt_list.index(max(cnt_list))
print(unique_S[max_index])
딕셔너리를 활용한 풀이 (클로드의 힘을 빌렸다)
더보기
S = input().upper()
char_count = {}
# Counter(S)
for char in S :
char_count[char] = char_count.get(char, 0) + 1
# 가장 많이 나온 문자의 개수 찾기
max_count = max(char_count.values())
# 가장 많이 나온 문자들 찾기
most_common = [char for char, cnt in char_count.items() if cnt == max_count]
# 결과 출력
if len(most_common) > 1 :
print("?")
else :
print(most_common[0])
반응형
'대기업 코테 유형' 카테고리의 다른 글
(백준/파이썬) [Silver V] 돌 게임 - 9655 (2) | 2024.09.04 |
---|---|
(백준/파이썬) [Silver V] 집합 - 11723 (2) | 2024.09.03 |
(백준/파이썬) [Bronze II] 벌집 - 2292 (1) | 2024.09.03 |
(백준/파이썬) [Bronze III] 삼각형과 세 변 - 5073 (2) | 2024.09.03 |
(백준/파이썬) [Bronze III] ZOAC 4 - 23971 (1) | 2024.09.03 |