백준 - 단어 공부(1157)

유재우·2022년 4월 12일
0

문제

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

  • 입력
첫째 줄에 알파벳 대소문자로 이루어진 단어가 주어진다. 주어지는 단어의 길이는 1,000,000을 넘지 않는다.
  • 출력
첫째 줄에 이 단어에서 가장 많이 사용된 알파벳을 대문자로 출력한다. 단, 가장 많이 사용된 알파벳이 여러 개 존재하는 경우에는 ?를 출력한다.
  • 예제 입력 1
Mississipi
  • 예제 출력 1
?
  • 예제 입력 2
zZa
  • 예제 출력 2
Z
  • 예제 입력 3
z
  • 예제 출력 3
Z
  • 예제 입력 4
baaa
  • 예제 출력 4
A

  • 첫번째 시도
word = input().lower()
maxCnt = 0
alPhaDic ={}
overlap = 0
for i in word:
    a = word.count(i)
    if a >= maxCnt:
        maxCnt = a
        maxWord = i
        alPhaDic[i] = a
for a in alPhaDic.values():
    if a == maxCnt:
        overlap += 1
if overlap > 1:
    maxWord = '?'
print(maxWord.upper())
  • 시간 초과가 된 이유는 딕셔너리로 인해 시간이 오래 걸린것 같다.
  • 두번째 시도
word = input().lower()
wordList = list(set(word))
cnt = []
for i in wordList:
    a = word.count(i)
    cnt.append(a)
if cnt.count(max(cnt)) > 1:
    print('?')
else:
    print(wordList[cnt.index(max(cnt))].upper())

참고한 블로그 링크

profile
끝없이 탐구하는 iOS 개발자 유재우입니다!

0개의 댓글