열렬히.뛰기

1157번: 단어공부

알고리즘: 실전 > 백준 단계별로 풀기: 1번 ~ 9번 > 1157번: 단어공부

문제

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

아이디어

  1. alphabet 배열을 만든다.
  2. 입력(무조건 소문자로 변환) & 문자열의 리스트화
  3. 각 칸을 숫자로 변환. alphabet[숫자] += 1
  4. 새 배열 x 만들기
  5. for문 돌기
    • 만약 알파벳[i]가 alphabet의 최대와 같다면 x에 (i+65 → 대문자) 한 걸 추가 (출력을 대문자로 해야 하므로)
  6. 배열 x의 길이가 1보다 큰지 판단
    • 맞다면 가장 많은 문자가 여러 개 → ? 출력.
    • 아니면 배열의 0번째 문자 출력

코드

python
"""단어 공부"""

alphabet = [0] * 26
word = list(input().lower())
for w in word:
    alphabet[ord(w)-97] += 1

x = []
for i in range(26):
    if alphabet[i] == max(alphabet):
        x.append(chr(i + 65))
if len(x) > 1:
    print("?")
else:
    print(x[0])