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

+ Recent posts