백준 1157번: 단어 공부

용상윤·2021년 2월 6일
0

백준 1157번: 단어 공부

📌 문제

문제

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

예시

(입력)
Mississipi

(출력)
?

(입력)
zZa

(출력)
Z

(입력)
z

(출력)
Z

📌 코드

처음 작성한 코드

import sys
input = sys.stdin.readline

word = list(input().upper().rstrip())

set_word = list(set(word))
set_word.sort()

count_of_apb = []

for apb in range(len(set_word)) :
    count_of_apb.append( word.count(set_word[apb]) )


if count_of_apb.count(max(count_of_apb)) > 1 :
    print("?")
else :
    print(set_word[count_of_apb.index(max(count_of_apb))])

접근

  1. zZa 입력
word
>>> ['Z','Z','A']

set_word
>>> ['A','Z']

count_of_apb
>>> [1, 2]
  1. set_word, count_of_apb, index() 를 이용

개선할 점

  • 변수명을 너무 길게 지은 듯 함. (왠지 복잡한 느낌)
  • 더 직관적인 코딩을 하자
    👉for apb in range(len(set_word)) : ...
    for x in set_word : ... 로 사용한다던지..

개선한 코드

import sys
input = sys.stdin.readline

s = list(input().upper().rstrip())

set_s = list(set(s))
set_s.sort()

cnt = []

for x in set_s :
    cnt.append(s.count(x))

if cnt.count(max(cnt)) > 1 :
    print("?")
else :
    print(s[cnt.index(max(cnt))])
profile
달리는 중!

0개의 댓글