Under Graduate School/Algorithm

[BAEKJOON ONLINE JUDGE 1157번] 단어 공부

  • -
728x90
반응형

단어 공부 in Python

문제

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

입력 데이터

  • 첫째 줄에 알파벳 대소문자로 이루어진 단어가 주어진다. 주어지는 단어의 길이는 1,000,000을 넘지 않는다.
  • 입력 예
Mississipi
zZa
z
baaa

출력 데이터

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

해결 방법

  • 등장하는 문자열에 대해 모두 대문자로 변환하여 dictionary를 이용해 count 해줌
  • 딕셔너리에 대해 문자의 발생 빈도를 기준으로 내림차순 정렬
    • 딕셔너리 첫 번째 문자와 두 번째 문자의 발생 빈도가 같으면 ?
    • 발생 빈도가 다르다면 딕셔너리의 가장 첫 문자 출력

코드

s = input()
check = {}
for letter in s:
    letter_upper = str.upper(letter)
    check.setdefault(letter_upper, 0)
    check[letter_upper] += 1
check = sorted(check.items(), key=lambda e: e[1], reverse=True)
print("?") if len(check)>1 and check[0][1]==check[1][1] else print(check[0][0])

문제 원본 링크

https://www.acmicpc.net/problem/1157

728x90
반응형
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.