728x90
https://www.acmicpc.net/problem/1157
import sys
string = sys.stdin.readline().rstrip().upper() #1
unique_string = list(set(string)) #2
cnt_list = []
for char in unique_string:
cnt = string.count(char) #3
cnt_list.append(cnt) #4
if cnt_list.count(max(cnt_list)) > 1: #5
print('?')
else:
max_index = cnt_list.index(max(cnt_list)) #6
print(unique_string[max_index])
#1 : 입력받은 문자열을 대문자로 변환
#2 : 중복문자를 없애고 리스트화
#3 : 각 문자의 개수
#4 : 순서대로 리스트에 추가
#5 : 가장 큰 개수를 가진 문자를 가진 수가 2개 이상이면 ? 출력
#6 : 가장 큰 개수를 가진 문자의 인덱스 찾고 중복문자를 없앤 리스트에서 인덱스 넣으면 가장 자주 나온 문자 찾기 가능
cnt_list는 unique_string에서 문자만 중복횟수로 바꾼것
baaa -> BAAA -> BA인데 cnt_list에서는 [ 1, 3 ] 가장 큰 숫자는 3이니까 3의 인덱스 1을 가지고 unique_string에서 인덱스 1을 출력
.index()
a = [ 1, 2, 3 ]
print(a.index(3))
결과)
2
문자열에 강한 파이썬의 매력을 느낄 수 있는 문제였다. 이것저것 쓸 수 있는 메서드가 많아서 좋다. 숙달되도록 더 연습해야겠다.
https://hgk5722.tistory.com/144
같이 풀어보자
728x90
'[Coding Test] > [백준]' 카테고리의 다른 글
[백준] 15596 파이썬(python) : 정수 N개의 합 (0) | 2022.07.02 |
---|---|
[백준] 10809 파이썬(python) : 알파벳 찾기 - (★) (0) | 2022.07.02 |
[백준] 13305 파이썬(python) : 단어의 개수 (0) | 2022.07.02 |
[백준] 11170 파이썬(python) : 숫자의 합 (0) | 2022.07.02 |
[백준] 2675 파이썬(python) : 문자열 반복 - (★) (0) | 2022.07.02 |