word = input()
#소문자와 대문자는 32차이
#알파벳은 26개, 0~25 = 65~90 - 65
l = []
for i in word:
ii=ord(i)
if ii>91:
ii-=32
l.append(ii)
n = [0 for i in range(26)]
for i in range(len(l)):
k = l[i]-65
a = n[k]
a+=1
n[k] = a
maxN = max(n)
maxI = n.index(maxN)
n.remove(maxN)
if maxN == max(n):
print('?')
else:
print(chr(maxI+65))
처음 풀 때 시간 초과가 계속 떴던 문제이다.
그 이유는 count 함수를 사용했는데, 이를 사용할때마다 문자를 처음부터 끝까지 탐색하기때문에 시간이 많이 걸린다. 그래서 count 함수를 사용하지 않고서 새로운 코드를 작성했다.
알파벳이 총 26개인 점을 이용해 문제를 풀었다.
문제: https://www.acmicpc.net/problem/1157
1157번: 단어 공부
알파벳 대소문자로 된 단어가 주어지면, 이 단어에서 가장 많이 사용된 알파벳이 무엇인지 알아내는 프로그램을 작성하시오. 단, 대문자와 소문자를 구분하지 않는다.
www.acmicpc.net
'Baekjoon > python' 카테고리의 다른 글
[백준 2908번] 상수 (0) | 2023.02.03 |
---|---|
[백준 1152번] 단어의 개수 (0) | 2023.02.03 |
[백준 2675번] 문자열 반복 (0) | 2023.01.26 |
[백준 10809번] 알파벳 찾기 (1) | 2023.01.26 |
[백준 11654번] 아스키 코드 (0) | 2023.01.26 |