문제 링크
https://www.acmicpc.net/problem/1157
나의 코드 (Python)
s = input().upper() # 대문자로 입력 받음
arr = list(set(s)) # 문자열의 중복 제거 값 배열
res = [] # 어떤 문자가 많이 쓰였는지 카운팅할 배열
for i in arr:
res.append(s.count(i)) # 문자가 몇개씩 있는지 카운팅
if res.count(max(res)) > 1: # 가장 많은 문자의 수가 여러 개인 경우 (중복)
print("?")
else:
print(arr[res.index(max(res))]) # res에서 가장 많은 문자 수를 가진 인덱스를 arr에서 찾아 출력
1. 대소문자를 구별하지 않고 대문자로 결과를 출력하기 때문에 upper()를 사용하여 입력을 받습니다.
2. 문자열의 구성요소를 파악하기 위해 list(set())을 사용하여 중복을 제거합니다
3. 어떠한 문자가 많이 쓰였는지 파악할 배열을 만듭니다. // arr과 res는 같은 인덱스를 가지게 될 겁니다.
4. 각 구성 문자가 몇 개씩인지 파악하여 res에 담습니다.
5. 카운팅 한 배열에 개수를 파악하여 가장 많은 문자의 수가 여러 개인 경우 "?"을 출력합니다.
6. 여러 개가 아닌 경우 res에 가장 많은 문자 수를 가진 인덱스로 arr 배열에서 찾아 출력합니다.
'코딩공부 > 백준 (python)' 카테고리의 다른 글
[백준 2908] 상수 (Python) (0) | 2022.03.16 |
---|---|
[백준 1152] 단어의 개수 (Python) (0) | 2022.03.15 |
[백준 2675] 문자열 반복 (Python) (0) | 2022.03.09 |
[백준 10809] 알파벳 찾기 (Python) (0) | 2022.03.09 |
[백준 11720] 숫자의 합 (Python) (0) | 2022.03.09 |
댓글