본문 바로가기

알고리즘_파이썬

백준 1157 단어 공부

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

 

1157번: 단어 공부

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

www.acmicpc.net

문제 접근

출력의 단어가 대문자인 것, 그리고 입력 받은 단어의 대소문자를 구별하지 않는 점을 생각하여 입력 받는 string을 word라고 하고 이를 대문자로 변환하고 시작한다(word.upper()). 이때, 해당 단어의 알파벳을 셀때는 word.count()를 사용하고 해당 알파벳의 존재 여부를 확인하기 위해서는 set(word)를 사용하여 알파벳의 중복을 없앤 단어 set를 사용하면 된다. 이를 코드로 표현하면 다음과 같이 된다. 

 

문제 풀이

word = str(input())
word = word.upper()
alphabet = set(word)
result = []
for i in alphabet:
  result.append((i, word.count(i)))
result.sort(key = lambda x : -x[1]) #알파벳의 등장회수가 많은 순으로 정렬을 한다 

if len(result) == 1: #입력 받은 알파벳이 하나면
  print(result[0][0])
elif result[0][1] == result[1][1]: #최대 알파벳 등장횟수가 같은 경우
  print('?')
else: #최대 등장 알파벳 출력
  print(result[0][0])

'알고리즘_파이썬' 카테고리의 다른 글

백준 2525 오븐 시계  (1) 2024.02.02
백준 1016 제곱ㄴㄴ 수  (1) 2024.02.02
백준 11653 소인수 분해  (0) 2024.02.01
백준 2581 소수  (1) 2024.02.01
백준 5073 삼각형과 세변  (0) 2024.01.31