https://www.acmicpc.net/problem/1157
문제 해석
한 단어를 입력받고 입력받은 단어의 알파벳 개수를 세어 가장 많이 사용된 알파벳을 대문자로 출력하는 문제이다.
이때 가장 많이 사용된 단어가 여러 개라면 "?" 을 출력해야 한다.
코드
n = input().upper()
word = list(set(n))
word_count = []
for i in word:
word_count.append(n.count(i))
temp = max(word_count)
if word_count.count(temp) > 1:
print("?")
else:
max_index = word_count.index(temp)
print(word[max_index])
문제 풀이
처음에 입력받은 단어는 문자열로 변수 n에 저장된다. 이때 출력값이 모두 대문자로 출력해야하고, 소문자와 대문자를 구분없이 세어주기 위해 .upper() 메소드를 활용한다.
단어의 개수를 세기위해 중복되는 단어가 제거된 배열을 만들어주어야 한다. 따라서 set() 자료형을 이용하여 n을 저장한 후 다시 이를 list로 저장하여 변수 word에 저장해주었다.
word = 중복되지 않은 변수들의 리스트
word_count 라는 리스트를 선언하고, word 에 해당하는 알파벳의 개수를 세어준다.
이때 n.count(i) 를 사용한다. # n 문자열에 알파벳 i 의 개수를 구해 word_count 에 넣어줌.
word_count = word 안의 알파벳이 몇개 있는지 저장된 리스트
temp = word_count의 최대값을 저장하는 변수
word_.count의 최대값의 개수를 세어 최대값이 1보다 크다면, 즉 최대값이 여러개라면 '?' 를 출력한다.
만약 조건문에 해당하지 않는다면
max_index = word_count의 최대값의 인덱스
word[max_index] 즉 max_index의 해당하는 word값을 출력한다.
원문: https://ddingmin00.tistory.com/19
'Koala - 5기 > 기초 알고리즘 스터디' 카테고리의 다른 글
[백준|python] 2852번 NBA 농구 (0) | 2022.01.28 |
---|---|
[백준|python] 1966번 프린터 큐 (0) | 2022.01.26 |
[백준 / python] 5218번 - 알파벳 거리 (0) | 2022.01.25 |
[백준/C++] 14561번 회문 (2) | 2022.01.25 |
[백준/python] 7795 먹을것인가 먹힐 것인가 (2) | 2022.01.25 |