Koala - 8기/기초 알고리즘 스터디

[백준 / python] 1157. 단어 공부

HwangJerry 2022. 10. 2. 21:16
 

1157번: 단어 공부

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

www.acmicpc.net

 

풀이

1. 딕셔너리 구조를 이용하여 각 문자가 몇번이나 등장하는지 value에 저장한다.

2. 딕셔너리 value 값을 람다함수를 이용하여 내림차순으로 정렬한다.

3-1. 딕셔너리에 입력된 문자가 한개인 경우, 첫 번째 키(가장 많이 등장한 문자)를 대문자로 출력한다.

3-2. 딕셔너리에 입력된 문자가 여러개인 경우, 첫번째 키와 두번째 키의 value를 비교하여 동일한 경우 '가장 많이 사용된 알파벳이 여러개인 경우'에 해당하므로 '?'를 출력한다.

 

코드

string = input()
string = string.lower()
# print("string.lower() : {}".format(string))

D = dict()

for key in string :
    # 이미 딕셔너리에 해당 알파벳이가 있는 경우
    if key in D :
        D[key] += 1
    # 딕셔너리에 해당 알파벳이 없는 경우
    else :
        D[key] = 1

# 딕셔너리 value 내림차순 정렬 - 람다함수 이용
D = dict(sorted(D.items(), key = lambda x: x[1], reverse=True))

# 딕셔너리 첫번째 키 저장
first_key = list(D.keys())[0]

# 딕셔너리에 입력된 문자열이 여러개인 경우 - 2번째 키값이랑 비교하여 중복되면 ? 출력
if (len(D) > 1) :
    second_key = list(D.keys())[1]

    if (D[first_key] == D[second_key]) : print("?")
    else : print(first_key.upper())

#딕셔너리에 입력된 문자열이 1개의 문자뿐인 경우 - 그냥 출력
else :
    print(first_key.upper())