https://www.acmicpc.net/problem/1157
문제 풀이
- 출력을 대문자로 하기때문에 input값을 대문자로 변경한다.
- dict에 중복된 값과 중복된 개수를 저장한다.
- dict의 value의 최대값이 여러 개이면 ?을 출력하고, 하나이면 그 value 최대값을 출력한다.
solution
import sys
str = (sys.stdin.readline().strip()).upper() # 입력받은 문자열을 모두 대문자로 변경
result = {}
for w in list(set(str)): # 문자를 key로 문자의 중복 개수를 value로 딕셔너리에 담음
result[w] = str.count(w)
max_key = [k for k,v in result.items() if max(result.values()) == v] # 중복 개수의 최대값인 key값을 리스트에 담음
if len(max_key) > 1: # 리스트의 길이가 1 이상이면 최댓값이 여러 개임으로 '?'을 출력함
print('?')
else:
print(max_key[0])
추가적인 문법 정리 - 문자열을 변경하는 메서드
- 위 문제에서 upper 메서드를 사용하여 문자열을 모두 대문자로 바꾸어 사용하였습니다.
- 이처럼 소문자, 대문자 등 여러가지로 문자열을 변경하는 메서드를 정리했습니다.
meg = 'Hi! Everyone!'
# str.capialize()
# 문자열 첫 글자 대문자, 나머지는 소문자로 반환
print(meg.capitalize()) # Hi! everyone!
# str.title()
# 단어 첫 글자 대문자, 나머지 소문자
print(meg.title()) # Hi! Everyone!
# str.upper()
# 모든 글자를 대문자로 반환
print(meg.upper()) # HI! EVERYONE!
# str.lower()
# 모든 글자를 소문자로 반환
print(meg.lower()) # hi! everyone!
# str.swapcase()
# 대문자는 소문자로, 소문자는 대문자로 반환
print(meg.swapcase()) # hI! eVERYONE!
'algorithm > 백준' 카테고리의 다른 글
[PYTHON] 2908 상수 - reverse() (2) | 2023.01.26 |
---|---|
[PYTHON] 1152 단어의 개수 - split 정리 (0) | 2023.01.26 |
[PYTHON] 5597 과제 안 내신 분...? (0) | 2023.01.26 |
[PYTHON] 1712 손익분기점 ZeroDivisionError (0) | 2023.01.26 |
[PYTHON] 10822 더하기 (0) | 2023.01.19 |
댓글