https://www.acmicpc.net/problem/1157
알파벳 대소문자로 된 단어가 주어지면, 이 단어에서 가장 많이 사용된 알파벳이 무엇인지 알아내는 프로그램을 작성하시오. 단, 대문자와 소문자를 구분하지 않는다.
w=input().upper() # 대문자로 치환
A={} # {'알파벳' : 등장횟수, ...} 넣을 예정
for i in w:
if A.get(i): # 딕셔너리에 key 값 확인
A[i]+=1
else :
A[i]=1
M = [] # value 값이 큰 item만 저장할 list...
for a, n in A.items():
if len(M)>1:
if M[1]==n:
M.append([a,n])
elif M[1]<n:
M = [a,n]
else : M=[a,n]
if len(M)>2:
print('?')
else : print(M[0])
✔ 딕셔너리와 set는 각각 중복된 key 값을 허용하지 않거나 중복된 값을 허용하지 않는다는 점에서 비슷한 자료형이다. 처음에 알파벳은 key로, 알파벳이 나온 횟수는 value로 묶으면 좋겠다는 생각에 바로 딕셔너리를 도입했다.
딕셔너리로 묶고 난 후, value의 값으로 key값을 정렬해주기 위하여 정렬함수 sorted()를 활용했으면 좋았겠으나, sorted()가 떠오르지 않아 저렇게 노가다 프로세스를 구성하였다. (근데 sorted()를 쓰는 것도 복잡해보인다 🙄)
w = input().upper()
w_set = list(set(w)) # 알파벳 담는 리스트
cnt = [] # 알파벳이 등장한 횟수를 담는 리스트
for i in w_set:
cnt.append(w.count(i)) # 등장한 횟수 차례차례 담아주기
if cnt.count(max(cnt)) >1: # max 값이 몇 번 등장했는지 확인
print('?')
else :
cnt_max_id = cnt.index(max(cnt))
print(w_set[cnt_max_id])
두번째 풀이의 승리 👏