https://www.acmicpc.net/problem/1157
Baekjoon Online JudgeBaekjoon Online Judgewww.acmicpc.netalpha = input()
alpha_str = alpha.lower()
alpha_dic = {}
for i in alpha_str:
if(i in alpha_dic):
alpha_dic[i] += 1
else:
alpha_dic[i] = 1
max_key = max(alpha_dic, key=alpha_dic.get)
count = 0
for i in alpha_dic:
if alpha_dic[i] == alpha_dic[max(alpha_dic)]:
count = count + 1
if count>1:
print('?')
else:
print(max_key.upper())
파이썬에서는 제대로 동작하는데 제출하면 자꾸 틀렸다는데..
이 댓글은 게시물 작성자가 삭제하였습니다.
gpt한테 물어보니까 코드주길래 복붙했더니 바로 통과됐네 ㅅㅂ;; 문제를 살펴본 결과, 입력값으로 대문자와 소문자가 혼합된 문자열이 들어올 수 있습니다. 하지만 주어진 코드에서는 입력값을 모두 소문자로 변환하여 처리하고 있습니다. 따라서 대소문자가 혼합된 문자열을 입력으로 받았을 때, 올바른 결과가 출력되지 않을 수 있습니다. 백준 1157번 문제의 조건에 따라 대소문자를 구분하지 않고 알파벳 중 가장 많이 사용된 알파벳을 출력해야 합니다. 이를 위해 입력값을 모두 대문자로 변환하거나 모두 소문자로 변환하는 것이 아닌, 알파벳의 등장 빈도를 구할 때 대소문자를 구분하지 않도록 처리해야 합니다. 라고 하는데 내가 한 코드랑 대체 뭔 차이냐..
아니 등장빈도를 구하든 입력값을 upper 혹은 lower를 하든 똑같은 원리잖아..
if alpha_dic[i] == alpha_dic[max(alpha_dic)]: 부분이 max_key가 제대로 나온다는 가정 하에 alpha_dic[i] == alpha_dic[max_key]가 되어야할듯 위에서는 value로 max를 구했지만 여기선 아니네
말대로 수정하니까 되네요... 근데 결과는 정상적으로 똑같은데 왜 안됐을지.. 후 빡세다..
백준에 있는 예시만 돌려본거 아님? abccde 이런거 넣어봐
테스트로 mission이라고 입력하고 alpha_dic[max_key] 랑 alpha_dic[max(alpha_dic)] 랑 값 비교해봤는데 똑같이 2가 나오는데.. 하앍...
내가 말한 예시는 넣어봄?
오 다르게 나오네 대체 무슨차이지;;?
max(alpha_dict)는 밸류를 보지 않고 키 중에서 최대값을 출력함
?? 그러니까 키 밸류가 {1:5, 2:3} 이렇게 있으면 2가 출력되는거야? 키 중에서 최대값이니까?
ㅇㅇ 그래서 max_key 구한 것처럼 value기준으로 구하던가 해야함
맞네 맞네~ 와 진짜 저런걸 어떻게 알아? 개천재다 고마워 ㅠㅠ
하다보면 알게 된다