본문 바로가기

Coding Test

[백준]1157번 단어공부

1157번 단어공부

문제

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

입력

첫째 줄에 알파벳 대소문자로 이루어진 단어가 주어진다. 주어지는 단어의 길이는 1,000,000을 넘지 않는다.

출력

첫째 줄에 이 단어에서 가장 많이 사용된 알파벳을 대문자로 출력한다. 단, 가장 많이 사용된 알파벳이 여러 개 존재하는 경우에는 ?를 출력한다.

 

풀이

알파벳 대소문자로 된 단어가 주어지면 이 단어에서 가장 많이 사용된 알파벳이 무엇인지 알아내는 프로그램을 작성한다.

단, 대소문자를 구분하지 않는다.

첫번째 줄에 알파벳 대소문자로 이루어진 단어가 입력된다. 단어의 길이는 1,000,000을 넘지 않음

첫째 줄에 단어에서 가장 많이 사용된 알파벳을 대문자로 출력, 많이 사용한 알파벳이 여러 개일 경우 ? 출력

  1. (word)단어를 입력을 받아 대소문자를 통일해준다.(소문자든 대문자든)
  2. (unique)입력된 단어의 알파벳의 중복을 없앤다.(반복되는 알파벳 비교하기 위해서)
  3. 반복문을 통해 unique 값을 토대로 word단어의 갯수를 카운팅한다.
  4. 그 중 최대값이 같으면 ?를 출력하고
  5. 아니면 해당하는 단어를 출력하기 위해 count한 최대값의 인덱스값(위치)를 출력해준다.
word = input().uppper() # upper()함수를 사용해 입력받은 값을 대문자로 통일해준다, 출력값이 대문자이기 때문에 upper사용
unique = list(set(word)) # set()함수를 사용해 중복을 없애주고 list로 각각의 알파벳을 저장.

cnt_list = [] # 알파벳을 갯수를 파악하기 위한 리스트 작성.
for i in unique: # 중복을 제거한 항목을 반복문을 돌려 각각의 알파벳과 입력받은 단어를 비교할 수 있게 한다.
	cnt = word.count(i) # 입력받은 단어중 각각 알파벳 갯수가 몇개인지 count()함수를 사용해 파악
	cnt_list.append(cnt) # 카운딩한 갯수를 cnt_list 항목에 넣어준다.

max_cnt = max(cnt_list) # 최댓값
max_index = cnt_list.index(max_cnt) # 카운팅 최댓값의 인덱스(위치) 값을 추출

if cnt_list.count(max_cnt) > 1: # cnt_list 중 최댓값이 중복되면 ?를 출력
	print("?")
else: 
	print(unique[max_index]) # 카운팅 최대값의 알파벳을 출력

다른사람 풀이

s, a = input().upper(), []

for i in range(65, 96):
    a.append(s.count(chr(i)))
print("?" if a.count(max(a)) > 1 else chr(a.index(max(a))+65))

 

'Coding Test' 카테고리의 다른 글

[백준]10926번 ??!  (0) 2022.02.17
[백준]1152번 단어의 개수  (0) 2022.01.30
[백준]2675번 문자열 반복  (0) 2022.01.27
[백준] 10809번 알파벳 찾기  (0) 2022.01.26
[백준] 11720번 숫자의 합  (0) 2022.01.26