문제
https://www.acmicpc.net/problem/1157
문제는 위 사이트를 참고하세요.
풀이
x = list(map(str, input())) # 문자열 입력
lowerAlpa = {} # 소문자를 저장할 딕셔너리
upperAlpa = {} # 대문자를 저장할 딕셔너리
temp = [] # 입력한 문자열의 문자를 아스키코드로 변환하여 저장할 리스트
count = 0 # 딕셔너리 value의 max값이 몇 개인지 셀 변수
finalAlpa = 0 # 가장 많이 쓰인 알파벳을 저장할 변수
for i in range(97, 123): # 알파벳의 아스키코드를 key로 주고, 0을 value로 줍니다.
lowerAlpa[i] = 0
upperAlpa[i-32] = 0
length = len(x) # 입력받은 문자열의 길이
for n in range(0, length): # 문자열의 길이만큼 for문을 돌리고, 알파벳을 아스키코드로 변환하여 temp에 저장
temp.append(ord(x[n]))
z = temp[n]
if z >= 97: # 값에 따라 조건을 추가하여, 소문자인 경우에도 대문자에 +1 해준다.
upperAlpa[z-32] += 1
else:
upperAlpa[z] += 1
maxValue = max(upperAlpa.values()) # 가장큰 value 값을 구함
for c in range(65, 91): # key의 value 값이 maxValue와 같은 count를 1 올리고, 마지막으로 출력할 알파벳을 c로 해줌
if upperAlpa[c] == maxValue:
count += 1
finalAlpa = c
if count != 1: # count가 2 이상이면 ? 출력
print("?")
else: # 아니면 finalAlpa 저장된 값을 알파벳으로 변환하여 출력
print(chr(finalAlpa))
풀이는 주석을 참고해주세요.
다 풀고 생각해보니까 처음부터 문자를 입력할 때 iuput.upper()으로 입력받아 문자를 대문자로 변환해 저장했으면
for문과 if문을 많이 줄일 수 있었습니다.
결과
'IT > 알고리즘' 카테고리의 다른 글
1일 N알고리즘 - #12 (0) | 2020.05.16 |
---|---|
1일 1알고리즘 - #11 (0) | 2020.05.16 |
1일 1알고리즘 - #9 (0) | 2020.05.15 |
1일 1알고리즘 - #8 (0) | 2020.05.15 |
1일 1알고리즘 - #7 (0) | 2020.05.15 |
댓글