백준 문제 풀이 1157 ( 단어 공부 )

백준 단어 공부

import sys 					# 모듈 가져와~

word = sys.stdin.readline().strip().upper() 	# 입력 받아서 대문자로 바꾸고 word에 저장

lst = [] 					# 빈
cnt = [] 					# 리스트 생성
mx = 0 						# max값 0으로 초기화

for i in word: 					# word에 입력받은 문자 하나씩 i 에 넣고
    if not i in lst: 				# lst에 i 가 없으면
        lst.append(i) 				# 추가
        cnt.append(word.count(i)) 		# cnt에는 i 의 갯수 세서 추가

for j in range(len(lst)): 			# lst리스트 길이만큼 루프
    if mx < cnt[j]: 				# 제일 많이 나온 값 구하기
        mx = cnt[j] 
        wrd = lst[j]
        
cnt.sort() 					# 정렬하고
cnt.reverse() 					# 뒤집어서 제일 큰값이 앞에 오게
						# [0]이 가장 큰 수 [1]이 두번째 큰 수
if cnt[0] == cnt[1]: 				# [0]과[1]이 같으면 가장 큰 수 최소 두개 이상
    print("?") 					# ?출력
else:
    print(wrd) 					# 아니면 wrd 출력

능지가 일을 안해서 그냥 손가는대로 짠 코드.... 전혀 파이썬 답지 않다.

그것도 그렇지만 백준에서 런타임에러가 나 받아주질 않는다.


import sys

word = sys.stdin.readline().strip().upper()

mx = 0
wrd = ' ' 				# 빈 문자열
cnt = []
lst = []

for i in word:
    if not i in lst:
        lst.append(i)
        cnt.append(word.count(i))

for j in range(len(lst)):	 	# 이 부분부터 바뀜
    if mx <= cnt[j]:		 	# max 값이 cnt[j] 보다 작거나 같을때
        if mx < cnt[j]: 		# 그러면서도 max 값이 더 작을때
            wrd = ' ' 			# wrd 문자열 공백으로 초기화
        wrd += lst[j] 			# wrd 를 문자열 더하기로 붙여버리기
        mx = cnt[j] 			# max 값 더 큰 값으로 초기화

if len(wrd) > 1:		 	# 길이 재서 1보다 길면 ?출력
    print("?")
else:
    print(wrd)

함수를 너무 많이 써서 런타임 에러가 낫나보다 함수 몇개 줄이니까 잘 풀렸다