관리 메뉴

솜씨좋은장씨

[BaekJoon] 1157번 : 단어 공부 (Python) 본문

Programming/코딩 1일 1문제

[BaekJoon] 1157번 : 단어 공부 (Python)

솜씨좋은장씨 2021. 4. 26. 00:37
728x90
반응형

코딩 1일 1문제 오늘의 문제는 백준의 단어 공부 입니다.

 

1157번: 단어 공부

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

www.acmicpc.net

Solution

from collections import Counter

inputStr = list(input().lower())

cnt = Counter(inputStr)

cnt_items = cnt.items()

cnt_nums = [num[1] for num in cnt_items]

max_num = max(cnt_nums)

if cnt_nums.count(max_num) != 1:
    print("?")
else:
    most_common_word = cnt.most_common(1)
    
    print(most_common_word[0][0].upper())

Solution 풀이

collections의 Counter를 활용해서 문제를 풀었습니다.

먼저 입력 받은 문자열을 소문자로 변경하고 리스트로 만들어 줍니다.

그 다음 Counter를 통해서 문자열 속에 문자가 각각 몇 개씩 있는지 세어줍니다.

여기서 카운트 한 숫자를 cnt_nums 리스트로 만들어줍니다.

그리고 가장 큰 숫자가 cnt_nums에 두번이상 등장할 경우에 "?" 를 출력

그렇지 않을 경우에 가장 큰 문자를 대문자로 출력 합니다.

 

SOMJANG/CODINGTEST_PRACTICE

1일 1문제 since 2020.02.07. Contribute to SOMJANG/CODINGTEST_PRACTICE development by creating an account on GitHub.

github.com

Comments