코딩딩딩

(python) 백준 1157 - 단어 공부 본문

백준

(python) 백준 1157 - 단어 공부

komizke 2023. 1. 21. 15:00

백준 1157

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

 

1157번: 단어 공부

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

www.acmicpc.net

 

1. 문제 설명

 

입력받은 단어에 대해서 가장 많이 사용된 알파벳을 구하는 문제

 

2. 문제 풀이

 

리스트에 알파벳 종류별로 개수를 저장한다.

 

word = input()
alphabet = [0 for _ in range(26)]   #알파벳 개수 저장
for i in range(len(word)):
    if word[i] >= 'A' and word[i] <= 'Z':   #대문자
        alphabet[ord(word[i]) - 65] += 1
    else:   #소문자
        alphabet[ord(word[i]) - 97] += 1

 

저장된 리스트의 최댓값에 대해 중복여부를 조사하여 그 크기에 해당하는 알파벳이

하나만 사용됐는지 혹은 여러 개 사용 됐는지 조사한다.

 

cnt = 0
for i in range(26): #최댓값에 해당하는 알파벳 중복 여부 검사
    if max_cnt == alphabet[i]:
        cnt += 1

 

3. 전체 코드

 

word = input()

alphabet = [0 for _ in range(26)]   #알파벳 개수 저장
for i in range(len(word)):
    if word[i] >= 'A' and word[i] <= 'Z':   #대문자
        alphabet[ord(word[i]) - 65] += 1
    else:   #소문자
        alphabet[ord(word[i]) - 97] += 1

max_cnt = max(alphabet) #알파벳 개수 최댓값
max_idx = alphabet.index(max_cnt)   #그 최댓값에 해당하는 인덱스
cnt = 0
for i in range(26): #최댓값에 해당하는 알파벳 중복 여부 검사
    if max_cnt == alphabet[i]:
        cnt += 1
if cnt == 1:    #최댓값에 해당하는 알파벳 하나인 경우
    print(chr(65 + max_idx))
else:   #최댓값에 해당하는 알파벳 여러개인 경우
    print("?")

'백준' 카테고리의 다른 글

(python) 백준 6603 - 로또  (0) 2023.01.23
(python) 백준 1546 - 평균  (0) 2023.01.21
(python) 백준 2581 - 소수  (0) 2023.01.21
(python) 백준 14681 - 사분면 고르기  (0) 2023.01.20
(C) 백준 11650 - 좌표 정렬하기  (1) 2023.01.19
Comments