[백준] 1157 단어공부 - python

김지원·2021년 8월 22일
0

coding-test

목록 보기
5/25
post-thumbnail

📖 문제 링크

https://www.acmicpc.net/problem/1157

📃 문제 설명

문자열에 관련된 문제로

대소문자로 된 단어가 주어지면 가장 많이 사용된 알파벳을 찾아내는 문제이다.

📃 조건

  • 대소문자를 구분하지 않는다.
  • 많이 사용된 알파벳이 여러 개인 경우 ? 출력

👨‍💻 문제 풀이

딕셔너리를 이용해 풀어봐야겠다고 생각이 들었다.
{ A: 1, B: 2} 이런 식으로 구별하고 value값이 가장 큰 key값을 가져와서 구별했다.

word = input()

word = word.upper()
alphabets = {}

for alphabet in word:
  if alphabet in alphabets:
    alphabets[alphabet] += 1
  else:
    alphabets[alphabet] = 1

most_alphabet = [k for k, v in alphabets.items() if v == max(alphabets.values())]

if len(most_alphabet) == 1:
  print(most_alphabet[0])
else:
  print("?")

딕셔너리를 사용하고 value값을 찾는 시간 때문에 다른 사람의 3배의 시간이 걸리고 말았다...ㅠ

다른 사람들의 풀이에는 아스키 코드를 사용하는 사람도 있었고 "ABCDEFG~~YZ"로 하나씩 대조해서 몇 개가 들었는지 구별했다.

딕셔너리를 공부할 수 있어 좋았지만 시간 복잡도에 대해 다시 생각해봐야할 문제라고 생각된다.

2021.08.22

profile
backend-developer

0개의 댓글