CodingTest/Baekjoon

[baekjoon] 백준 1157번(파이썬): 단어 공부

JunJangE 2021. 12. 19. 02:26

문제

 

1157번: 단어 공부

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

www.acmicpc.net

알고리즘

- 알파벳 단어를 입력받을 때 모든 알파벳을 대문자로 받는다.

- collections 메서드에 Counter 함수를 통해 알파벳의 개수를 확인한다.

- 알파벳의 개수가 1개 이하라면 최대 개수의 알파벳을 출력한다.

- 알파벳의 개수가 2개 이상이라면 알파벳의 개수를 비교하여 출력한다.

코드

import sys
from collections import Counter

word = list(map(str, sys.stdin.readline().strip().upper())) # 입력을 대문자로 받는다.
word = Counter(word) # Counter 함수를 통해 알파벳의 개수를 확인

# word에 알파벳의 데이터가 2개 이상 있는지 확인한다.
if len(word.most_common(2)) < 2:
    print(max(word))

else:
    # 알파벳의 개수가 제일 많은 2개의 데이터를 확인
    a, b = word.most_common(2)

    # 2개의 알파벳의 개수가 같으면 "?" 출력
    if a[1] == b[1]:
        print("?")

    # 다르다면 개수가 더 많은 알파벳을 출력
    elif a[1] > b[1]:
        print(a[0])

    else:
        print(b[0])

github

 

GitHub - junjange/CodingTest: 내가 푼 코딩 테스트 문제와 해결법

내가 푼 코딩 테스트 문제와 해결법. Contribute to junjange/CodingTest development by creating an account on GitHub.

github.com