less than 1 minute read

단어 공부

알파벳 대소문자로 된 단어가 주어지면, 이 단어에서 가장 많이 사용된 알파벳이 무엇인지 알아내는 프로그램을 작성하시오. 단, 대문자와 소문자를 구분하지 않는다.

Input-1)
Mississipi
Output-1)
?

Input-2)
bbaaac
Output-2)
A

접근 방식

  1. 입력 배열의 알파벳 중복을 제거한 뒤 사용된 알파벳의 갯수를 세어 빈 배열에 저장한다.
  2. 1번에서 저장한 배열의 최대값 개수가 2개 이상이라면 ?를 출력한다.
  3. 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('?')