대소문자가 섞여있는 알파벳 문자열이 주어지고, 이 단어에서 가장 많이 사용된 알파벳을 알아내는 문제이다.
여기서 가장 많이 사용된 알파벳이 1개가 아닌 경우에는 ?를 출력한다.
풀이는 다음과 같다.
str = input().upper() #대문자로 변경 ex) KIIJJJS
tmp = list(set(str)) #중복 제거 ex) KIJS
dics = []
for s in tmp: #인풋값별 문자반복 개수 구하기 ex) [1,2,3,1]
cnt = str.count(s)
dics.append(cnt)
if dics.count(max(dics)) > 1: #최댓값 개수가 2개 이상이면 ? 출력
print('?')
else: # ex) tmp[2]
print(tmp[dics.index(max(dics))])
대소문자 구분 없이 체크해야 하고, 최종결과값은 어차피 대문자로 출력해야 하기 때문에 upper() 함수로 아예 대문자로 만들어놓고 시작한다.
또한, set() 함수를 이용해서 중복을 제거하고 제거된 유니크 문자열들의 각각 포함갯수를 계산한다.
그리고 다른 분들 풀이를 참고해서 다시 풀어본 방식이다.
str = input().upper()
letter = ""
count = 0
for i in range(65, 91):
cnt = str.count(chr(i))
if count < cnt:
letter = chr(i)
count = cnt
elif count == cnt and count > 0:
letter = "?"
print(letter)
이 풀이는 알파벳 A-Z 반복문을 돌려가면서 입력한 문자열의 갯수를 구하는 방식이다.
'코딩테스트 연습' 카테고리의 다른 글
[백준] 2675번 - 문자열 반복 (PYTHON) (0) | 2022.12.12 |
---|---|
[백준] 10809번 - 알파벳 찾기 (PYTHON) (0) | 2022.12.12 |
[백준] 11720번 - 숫자의 합 (PYTHON) (0) | 2022.12.12 |
[백준] 11655번 - 아스키 코드 (PYTHON) (0) | 2022.12.12 |
[백준] 1065번 - 한수 (PYTHON) (0) | 2022.12.12 |