[백준] 1157 : 단어 공부 - Python

Chooooo·2023년 2월 22일
0

알고리즘/백준

목록 보기
82/182
post-thumbnail

단어 공부

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

입력

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

출력

첫째 줄에 이 단어에서 가장 많이 사용된 알파벳을 대문자로 출력한다. 단, 가장 많이 사용된 알파벳이 여러 개 존재하는 경우에는 ?를 출력한다.

import sys
sys.stdin = open("input.text", "rt")

data = input()
data = data.upper()

res = dict()
for x in data:
    if x in res.keys():
        res[x] += 1
    else:
        res[x] = 1

temp = res.values()
max_data = max(temp)
cnt = 0
for x in temp:
    if x == max_data:
        cnt += 1

result = ""
for key, value in res.items():
    if value == max_data:
        result = key

if cnt >= 2:
    print("?")
else:
    print(result)

🎈 코멘트

upper 메서드를 사용하여 전체 문자를 대문자로 변환.
중복을 제거한 문자만을 저장해서 카운트 한다는 생각 했으면 set을 이용했으면 됐음
나는 그냥 있는 그대로 다 돌면서 dict를 활용해서 개수를 저장했다.

count, set을 활용한 풀이

import sys
sys.stdin = open("input.text", "rt")

data = input()
data = data.upper()

data_set = list(set(data))
cnt = []
for x in data_set:
    count = data.count(x)
    cnt.append(count)

flag = 0
max_data = max(cnt)
for x in cnt:
    if x == max_data:
        flag += 1

if flag >= 2:
    print("?")
else:
    res = data_set[cnt.index(max_data)]
    print(res)
  • dict 활용하는게 더 편해보이긴 하다..
profile
back-end, 지속 성장 가능한 개발자를 향하여

0개의 댓글