STUDY/Algorithm

[백준] 1157 단어 공부

sinawi95 2021. 2. 1. 12:37
728x90
string = input().upper() 	# 대소문자 구분 안하는데 대문자로 출력하므로 대문자로 고정
alpha = dict()				
for ch in string:			# 알파벳이 각각 몇 개 있는지 확인
    if not ch in alpha:
        alpha[ch] = 0
    alpha[ch] += 1

alpha = sorted(alpha.items(), key=lambda x:x[1]) 	# 딕셔너리의 값으로 정렬
max_ch,max_val = alpha.pop()						# 마지막 값이 가장 큰값이므로 알파벳과 값 저장
if alpha==[]:										
    print(max_ch)
elif max_val == (alpha.pop())[1]:					
    print("?")
else:												
    print(max_ch)

원래는 if alpha==[]:를 넣지 않았으나 string이 딱 하나만 있는 경우에 런타임 에러가 떠서 끼워 넣었다.

생각보다 오래걸려서 다른 사람이 어떻게 했는지 봤는데 굳이 딕셔너리 안쓰고 리스트 두개써서 사용하거나 set을써서 사용해서 시간을 줄였더라... 똑똑한 사람들

# 타인의 코드 1
word = input().upper()
S = list(set(word))
cnt = []

for v in S:
    cnt.append(word.count(v))

if cnt.count(max(cnt))>=2:
    print('?')
else:
    print(S[(cnt.index(max(cnt)))])

# 타인의 코드 2
s = input().upper()

a = []
for i in range(65, 91):
    a.append(int(s.count(chr(i))))
if (a.count(max(a)) > 1):
    print("?")
else:
    print(chr(a.index(max(a)) + 65))

'STUDY > Algorithm' 카테고리의 다른 글

[백준] 2941 크로아티아 알파벳  (0) 2021.02.01
[백준] 10809 알파벳 찾기  (0) 2021.02.01
[백준] 8958 OX 퀴즈  (0) 2021.01.30
[백준] 1475 방 번호  (0) 2021.01.30
[백준] 1075 나누기  (0) 2021.01.30