문제 보기: 1157번: 단어 공부 (acmicpc.net)
문제
알파벳 대소문자로 된 단어가 주어지면, 이 단어에서 가장 많이 사용된 알파벳이 무엇인지 알아내는 프로그램을 작성하시오. 단, 대문자와 소문자를 구분하지 않는다.
입력
첫째 줄에 알파벳 대소문자로 이루어진 단어가 주어진다. 주어지는 단어의 길이는 1,000,000을 넘지 않는다.
출력
첫째 줄에 이 단어에서 가장 많이 사용된 알파벳을 대문자로 출력한다. 단, 가장 많이 사용된 알파벳이 여러 개 존재하는 경우에는 ?를 출력한다.
새로 사용한 함수
A = input().upper()
.upper() 를 사용하였으며 해당 함수를 사용하면 text 형태의 문자를 대문자로 바꿔주는 기능을 한다.
풀이 과정
1. 입력값을 딕셔너리 형태로 저장한다.
2. 딕셔너리로 저장된 값의 value 값을 비교해본다.
코드
1번 코드
sentence = input().upper()
alphabet_array = {'A': 0, 'B': 0, 'C': 0, 'D': 0, 'E': 0, 'F': 0, 'G': 0,
'H': 0, 'I': 0, 'J': 0, 'K': 0, 'L': 0, 'M': 0, 'N': 0, 'O': 0,
'P': 0, 'Q': 0, 'R': 0, 'S': 0, 'T': 0, 'U': 0, 'V': 0, 'W': 0, 'X': 0, 'Y': 0, 'Z': 0}
for i in sentence:
alphabet_array[i] += 1
for j in alphabet_array:
if j == 'A':
max_alphabet = 'A'
elif alphabet_array[j] != 0:
if alphabet_array[max_alphabet] == alphabet_array[j]:
print("?")
break
elif alphabet_array[max_alphabet] < alphabet_array[j]:
max_alphabet = j
if j == 'Z':
print(max_alphabet)
1번 코드는 동작을 잘하는데 백준 채점에서 계속 fail이되서 사용하지 못했다.
2번 코드
sentence = input().upper()
alphabet_array = dict()
for i in sentence:
if i in alphabet_array:
alphabet_array[i] += 1
else:
alphabet_array[i] = 1
big_num = 0
big_word = 0
for alpha in alphabet_array:
if alphabet_array[alpha] > big_num:
big_num = alphabet_array[alpha]
big_word = alpha
elif alphabet_array[alpha] == big_num:
big_word = '?'
print(big_word.upper())
1번과 거의 비슷한 구조지만 어떤 알파벳이 들어오는지는 모르는 상황에 기반을 둔 코드
'Algorithm' 카테고리의 다른 글
[백준_1316] 그룹 단어 체커 (0) | 2022.04.21 |
---|---|
[백준_2941] 크로아티아 알파벳 (0) | 2022.04.21 |
[백준_10430] 나머지 (0) | 2022.04.20 |
[백준_4673] 셀프 넘버 (0) | 2022.04.20 |
[백준_4344] 평균은 넘겠지 (0) | 2022.04.20 |