본문 바로가기
IT/알고리즘

1일 1알고리즘 - #10

by Sungjun_ 2020. 5. 16.

문제

https://www.acmicpc.net/problem/1157

 

1157번: 단어 공부

알파벳 대소문자로 된 단어가 주어지면, 이 단어에서 가장 많이 사용된 알파벳이 무엇인지 알아내는 프로그램을 작성하시오. 단, 대문자와 소문자를 구분하지 않는다.

www.acmicpc.net

문제는 위 사이트를 참고하세요.

 


풀이

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

댓글