[Python] 백준 1157번
단어 공부
알파벳 대소문자로 된 단어가 주어지면, 이 단어에서 가장 많이 사용된 알파벳이 무엇인지 알아내는 프로그램을 작성하시오. 단, 대문자와 소문자를 구분하지 않는다.
Input-1)
Mississipi
Output-1)
?
Input-2)
bbaaac
Output-2)
A
접근 방식
- 입력 배열의 알파벳 중복을 제거한 뒤 사용된 알파벳의 갯수를 세어 빈 배열에 저장한다.
- 1번에서 저장한 배열의 최대값 개수가 2개 이상이라면 ?를 출력한다.
- 1번에서 저장한 배열의 최대값 개수가 1개라면 해당 알파벳을 출력한다.
문제 해결
count 함수와 인덱싱이 헷갈려 시간을 많이 잡아먹었다.
사용된 알파벳 개수를 새 배열에 저장한 후 sort(reverse=True) 함수를 통해 정렬하여 계산하려 했으나 알파벳 배열의 순서와 맞지 않았다. 다시 생각해보니 그냥 “알파벳 개수를 센 배열의 최대값 개수”를 알면 해결될 문제라 생각하고 코드를 작성하였다.
먼저 이번 문제를 통해 count 함수를 다시 한번 공부하게 되었다.
1
2
3
4
5
6
7
8
n = input().upper()
l,rs = list(set(n)),[]
for i in l:
rs.append(n.count(i))
if rs.count(max(rs)) == 1:
print(l[rs.index(max(rs))])
else:
print('?')