Problem Solving/boj.kr (Python)

[BOJ / 파이썬] 1157 : 단어 공부

hoiiiii 2022. 2. 26. 22:06

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

 

1157번: 단어 공부

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

www.acmicpc.net

 

Sol ) 

1.  길이 26의 cnt 배열 선언 및 0으로 초기화

2. 문자열을 돌면서 cnt [문자 - "A"의 아스키코드] 값을 1씩 증가 ( cnt [0] = a의 횟수 )

3. cnt배열의 최댓값( 가장 많이 출력된 문자의 횟수)을 저장

4. 만약 최대값이 두 개 이상의 문자일 경우 "?" 출력

5. 최대값이 한 개일 경우 해당 문자 출력

 

소스코드 )

s = input().upper()
cnt_arr = [0 for _ in range(26)]
for char in s:
    cnt_arr[ord(char)-ord("A")] += 1
max_num = max(cnt_arr)
result = False
for i in range(len(cnt_arr)):
    if cnt_arr[i] == max_num:
        if result:
            result = "?"
            break
        result = chr(ord("A")+i)
print(result)