백준 문제 풀이 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)
함수를 너무 많이 써서 런타임 에러가 낫나보다 함수 몇개 줄이니까 잘 풀렸다