[백준 / 1157] 단어 공부
in Problem Solving on BaekJoon
날짜: 2021년 6월 17일
소요 시간: 37분 21초
카테고리: 수학문제
태그: bronze.1, 1157, 파이썬
입출력 예시
| 예제 입력 | 예제 출력 |
|---|---|
| Mississipi | ? |
| zZa | Z |
| z | Z |
| baaa | A |
내가 적은 코드
word = input().upper()
arr = list(set(word))
answer = []
for i in arr:
answer.append(word.count(i))
if answer.count(max(answer)) >= 2:
print("?")
else:
print(arr[(answer.index(max(answer)))])
풀이 과정
word에 문자열을 저장한 뒤 upper()함수로 모두 대문자로 바꾸어 주고, arr에 문자열에서 중복을 제외한 원소들을 저장한다.
그리고 arr의 원소를 차례대로 word 문자열의 원소들의 개수를 count()함수로 카운팅해서 answer리스트에 저장한다.
만약 answer의 리스트에서 최댓값의 갯수가 2개 이상일 때 (=가장 많이 사용 된 알파벳이 여러개일 때) ?를 출력한다.
그 answer의 최댓값 (=가장 많이 사용된 알파벳의 갯수)의 인덱스를 arr에서 인덱싱해서 (=가장 많이 사용된 알파벳) 출력한다.
베스트 코드
s,a=input().lower(),[]
for i in range(97,123):
a.append(s.count(chr(i)))
print('?'if a.count(max(a))>1 else chr(a.index(max(a))+97).upper())
반성
- 문자열과 리스트의 개념을 확실히 알고 있어서 인덱싱에 대한 이해도가 높아야 풀 수 있는 문제였다. 조금 삐걱거리긴 했어도 베스트 코드와 비슷한 로직으로 문제를 풀었단 점에 뿌듯했다.
