본문 바로가기
알고리즘-python/백준 문제

[백준/1157/파이썬(Python3)] 단어 공부

by 빅데이터1020 2021. 6. 30.
SMALL

문제 출처

 

1157번: 단어 공부

알파벳 대소문자로 된 단어가 주어지면, 이 단어에서 가장 많이 사용된 알파벳이 무엇인지 알아내는 프로그램을 작성하시오. 단, 대문자와 소문자를 구분하지 않는다.

www.acmicpc.net

 

풀이 코드

temp=input().strip()
temp=temp.lower()

dic={}

for ch in temp:
    if ch in dic.keys():
        dic[ch]+=1
    else:
        dic[ch]=1

m = max(dic.values())
answer = []
for key, value in dic.items():
    if value==m:
        answer.append(key.upper())

if len(answer)==1:
    print(answer[0])
else:
    print('?')

 

딕셔너리를 사용해서 단어 개수를 세 주었습니다.

그리고 value로 key를 반환하도록 합니다.

 

key로 value를 반환하는 함수는 dict에서 주어지지만,

그 반대의 경우(value로 key를 반환) 는 따로 함수가 없어서 for문을 만들었습니다.

 

value로 key를 반환할 경우에는 for문을 만들거나, map함수로 딕셔너리의 key, value 값을 뒤집어(?) 주면 됩니다.

dic={'a':0, 'b':12, 'c':5}

reverse_dic=dict(map(reversed, dic.items()))
print(dic) # {'0':'a', '12':'b', '5':'c'}

 

그리고 오늘 코드에서 알게된 것..!

# True 를 반환
print(ch in dic.keys())

# False 를 반환
print(ch in dic.keys()==True)

조건문에 많이 사용하는 구문인데, 뒤에 "==True" 를 쓰면,, 의도한 결과가 안 나오던군요ㅋㅋㅋ

LIST