코딩 테스트/백준
[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)))])