BOJ1157 - 단어공부

CYSSSSSSSSS·2023년 6월 22일

알고리즘

목록 보기
57/83

문제1157

문제

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

해결

  • 문자의 개수를 카운팅 하는 배열을 만든다 (알파벳은 26자)
  • 아스키 코드 값에 대문자 번호는 65 ~ 90 / 소문자 번호는 97 ~ 122 이다.
  • 해당 문자가 대문자 인지 소문자 인지 구분하여 해당 아스키 코드 값으로 나머지를 나누어 배열에 카운팅
  • 문자열을 전부 스캔 하면 만약 max 값이 2개 이상으로 나온다면 ? 를 출력한다
  • 2개 이상이 아니라면 해당 문자열을 index + ord('A') 를 더하여 해당 문자를 chr 함수로 표현 한다.
sentence = input()
alpha = [0] * 26
for s in sentence:
    ord_ = ord(s)

    if 65 <= ord_ <= 90:
        alpha[ord_ % 65] += 1
        continue

    if 97 <= ord_ <= 122:
        alpha[ord_ % 97] += 1
        continue


if alpha.count(max(alpha)) > 1:
    print('?')

else:
    print(chr(alpha.index(max(alpha)) + 65))
profile
개발자 되고 싶어요

0개의 댓글