[알고리즘] 백준 1157 : 단어 공부 - B1

eternal moment·2023년 4월 14일
0

2023.04.15 풀이

import sys
input=sys.stdin.readline
arr=[0]*(26)

s=input().rstrip()

for i in s.upper():
    arr[ord(i)-65]+=1

if arr.count(max(arr))!=1:
    print('?')
else:
    print(chr(arr.index(max(arr))+65))
  • 알파벳 개수만큼의 길이를 선언한 배열
  • 입력받은 문자열 -> 대문자 -> 숫자로 바꾼 후 숫자에 해당하는 인덱스의 값+=1
  • 다시 문자열로 바꾸는게 조금 유연하지 못했는데(마지막줄)
    배열의 최대값을 가진 index를 구한 후 index를 문자열로

다른풀이

import sys
input = sys.stdin.readline

s = input().strip().upper()
muc, mucc = None, 0

for i in range(26):
    c = chr(ord('A') + i)
    cnt = s.count(c)
    if cnt == 0:
        continue
    if muc != c and mucc == cnt:
        muc = '?'
    elif mucc < cnt:
        muc = c
        mucc = cnt
    
print(muc)
a = input().upper()
ab = list(set(a))
maxi = []

for i in ab:
    count = a.count(i)
    maxi.append(count)
if maxi.count((max(maxi))) > 1:
    print('?')
else:
    print(ab[maxi.index(max(maxi))])

check point

  • range index 오버되는 에러 : 또또 rstrip() ...
  • 다른풀이-2 처럼 문자->숫자, 숫자->문자로 바꾸지 않아도 풀 수 있는 풀이

0개의 댓글