백준 1157번 - 단어공부

Gyuhan Park·2021년 10월 25일
0

코딩테스트 정복

목록 보기
20/47

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

문자열이 주어졌을 때 가장 많이 나온 알파벳을 구하는 문제다. 가장 많이 사용된 알파벳이 여러 개 존재하는 경우에는 ?를 출력한다. 그냥 max()를 구하면 최댓값이 여러개인 경우가 무시되므로 나는 각각의 알파벳이 몇번 나왔는지 dictionary에 저장할 생각을 했다. string을 반복문으로 하나씩 받으면서 count를 해주었다.

# 정답코드

word = input().upper()
mydic = {}
for i in word:
  if i in mydic.keys():
   mydic[i] += 1
  else:
    mydic[i] = 1

maxs = [k for k,v in mydic.items() if max(mydic.values()) == v]

if len(maxs) > 1:
  print("?")
else:
  print(maxs[0])

# 참고코드

출력형태가 정해져있는 경우 string이나 list를 미리 만들어서 사용하는 게 바람직하다고 생각한다. 알파벳은 A부터 Z까지밖에 없으므로 범위를 한정시켜 계산하면 깔끔해보인다. 알파벳 개수만큼 count를 해야된다는 단점이 있지만 입력값의 길이와 상관없이 반복횟수가 정해져 있다는 점에서 효율적이라고 할 수 있다.

n = input()
n = n.upper()
alpa='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
result = []
for i in alpa:
  result.append(n.count(i))
if result.count(max(result)) > 1:
  print("?")
else:
  print(alpa[result.index(max(result))])
profile
단단한 프론트엔드 개발자가 되고 싶은

0개의 댓글