728x90
📢 문제 설명
고민해야할 부분
- 문자열 내의 알파벳 개수 세기
- 대소문자 구분 X
✏️ 코드 풀이
s = input().upper()
# print(s)
alphabet = list(set(range(65, 91)))
c_list = []
for x in alphabet:
c_list.append(s.count(chr(x)))
# print(c_list)
maximum = max(c_list)
m_ind = c_list.index(maximum)
if c_list.count(maximum) > 1:
print("?")
else:
print(chr(alphabet[m_ind]))
- 문자열을 모두 대문자로 변환한다.
최종적으로 출력되는 값도 대문자이므로, 문자열을 모두 대문자로 변환한 후 알파벳의 개수를 세도록 했다.s = input().upper()
- 대문자 알파벳을 배열로 저장한다.
아스키 코드의 10진수 값에 따라 A부터 Z+1에 해당하는 값을 range의 인자값으로 전달한다.alphabet = list(set(range(65, 91)))
set 함수를 통해 A부터 Z까지 정렬하고 list 함수로 리스트화까지 한다.
주의할 점은, 이후 alphabet 리스트의 값을 사용할 때 chr()함수를 사용해 'A'등으로 변환하여 사용해야 한다. - 최대값의 인덱스를 찾는다.c_list는 문자열에서 각 알파벳에 대한 개수를 차례로 저장한 리스트다. 변수 maximum에는 문자열 내의 알파벳 개수 리스트인 c_list의 최대값을 저장하고, m_ind는 c_list내에서 maximum 값이 위치한 최초의 인덱스 값이다.
만약 c_list에서 maximum이 2개 이상 존재한다면 문제의 조건에 어긋나므로 ? 를 출력하도록 한다. maximum = max(c_list) m_ind = c_list.index(maximum) if c_list.count(maximum) > 1: print("?") else: print(chr(alphabet[m_ind]))
SMALL
'Programming > Python' 카테고리의 다른 글
[백준/python3] 1929. 소수 구하기 (에라토스테네스의 체) (0) | 2022.01.20 |
---|---|
[백준/python3] 1316. 그룹 단어 체커 (0) | 2022.01.10 |
[백준/python3] 1002. 터렛 (0) | 2022.01.09 |
[백준/python3] 2941. 크로아티아 알파벳 (0) | 2022.01.09 |
[백준/python3] 2675. 문자열 반복 (0) | 2022.01.07 |