728x90
반응형
BaekJoon 백준 1157 단어 공부 문제는 알파벳 대소문자로 된 단어가 주어지면, 가장 많이 사용된 알파벳이 무엇인지 알아내는 문제이다. 알파벳을 세는 방법은 반복문과 python의 collection.Counter를 이용한 방법 2가지가 있다. 난이도는 Bronze 1이다.
BaekJoon 1157 단어 공부 문제 정보
출처
- https://www.acmicpc.net/problem/1157
난이도
- 브론즈 1 / Bronze 1
단어 공부 문제 요약
- 알파벳 대소문자로 된 단어가 주어지면, 이 단어에서 가장 많이 사용된 알파벳이 무엇인지 구하여 출력한다.
- 단어의 길이는 1,000,000을 넘지 않는다.
- 대문자와 소문자를 구분하지 않는다.
- 가장 많이 사용된 알파벳이 여러 개 존재하는 경우에는?를 출력한다.
문제 풀이 과정
- 알파벳을 입력받을 때 upper() 함수를 사용하여 대문자로 변환하여 입력받는다.
- 단어의 알파벳이 딕셔너리에 없다면 알파벳을 키로, 값을 1로 하는 원소를 추가하고, 딕셔너리에 있으면 1을 더한다.
(collection.Counter 클래스를 import 하여 Counter 클래스를 사용하면 똑같은 기능을 한다.) - 최다 빈출 횟수를 구하고, 최다 빈출 된 알파벳을 리스트에 저장한다.
- 리스트의 길이가 1이면 알파벳을 출력하고, 2 이상이면?를 출력한다.
코드 및 설명
# 방법 1: 반복문을 사용하여 카운트하기
word = input().upper()
# 알파벳 개수 세기
cnt = dict()
for i in word:
if i in cnt:
cnt[i] += 1
else:
cnt[i] = 1
# 최다 빈출 알파벳 구하기
max = max(cnt.values())
rst = list()
for k, v in cnt.items():
if v == max:
rst.append(k)
if len(rst) == 1:
print(rst[0])
else:
print('?')
# 방법 2: Counter 클래스를 사용하여 카운트하기
from collections import Counter
word = input().upper()
cnt = dict(Counter(word))
# 최다 빈출 알파벳 구하기
# 위 코드와 같다
파이썬 collection 모듈의 Counter 클래스를 사용하면 각 원소를 키, 개수를 값으로 하는 딕셔너리를 쉽게 구할 수 있다.
BaekJoon 백준 1157 단어 공부 문제의 난이도는 Bronze 브론즈 1이고, 파이썬 python으로 풀어보았다.
728x90
반응형
'Algorithm Problem Solving > BaekJoon' 카테고리의 다른 글
[BaekJoon] 백준 2869 달팽이는 올라가고 싶다 (Python / 파이썬) (0) | 2021.08.15 |
---|---|
[BaekJoon] 백준 1924 2007년 (Python / 파이썬) (0) | 2021.08.15 |
[BaekJoon] 백준 4344 평균은 넘겠지 (Python / 파이썬) (0) | 2021.08.14 |
[BaekJoon] 백준 2839 설탕 배달 (Python / 파이썬) (0) | 2021.08.14 |
[BaekJoon] 백준 1546 평균 (Python / 파이썬) (0) | 2021.08.13 |
댓글