코딩 테스트/백준

[Python] 백준 1157 단어 공부

위시리 2024. 12. 31. 17:13

 

코드 설계

  • 대소문자를 구분하지 않기 때문에
  • 문자를 먼저 대문자로 바꾸고
  • 아스키 코드 값을 기준으로 해당 인덱스 값 +1
  • 값이 max인 값을 찾는데
  • 만약 2개 이상이면 ? 리턴
  • 1개이면 해당 값에 대해 다시 문자로 바꿔서 리턴

 

정답 코드

import sys
input = sys.stdin.readline().strip

str = input()
li = [0] * 26

for s in str :
    idx = ord(s.upper()) % 65
    li[idx] += 1

max_value = li.index(max(li))
cnt = 0

for i in li :
    if i ==  max(li) :
        cnt += 1

if cnt > 1 :
    print("?")
else :
    print(chr(max_value+65))

 

다른 사람 코드 1

  • 비교를 위해 set 함수 사용 (있는 문자만 비교)
  • for문을 돌면서 알파벳 사용 횟수를 리스트에 저장하고
  • 알파벳이 사용된 횟수가 1보다 크면 '?' 출력
  • 최댓값이 하나라면 숫자 리스트 중 가장 큰 수의 위치를  index로 찾아 인덱스에 위치한 문자열 출력
word = input().upper()
word_list = list(set(word))

cnt = []
for i in word_list:
  count = word.count
  cnt.append(count(i))

if cnt.count(max(cnt)) > 1:
  print("?")

else:
  print(word_list[(cnt.index(max(cnt)))])