[백준 / 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())
반성
- 문자열과 리스트의 개념을 확실히 알고 있어서 인덱싱에 대한 이해도가 높아야 풀 수 있는 문제였다. 조금 삐걱거리긴 했어도 베스트 코드와 비슷한 로직으로 문제를 풀었단 점에 뿌듯했다.