AngelPlayer`s Diary

링크

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

 

1157번: 단어 공부

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

www.acmicpc.net

 

 

 

문제 해석

알파벳으로 이루어진 단어가 주어지면, 그중 가장 많이 쓰인 알파벳을 찾아내는 문제이다.

 

만약 가장 많이 사용된 알파벳의 수가 동일하면 '?'를 출력한다.

 

 

 

코드

 

 

 

코드 해석

# input

결과적으로 가장 빈도수가 많은 알파벳을 대문자로 출력하기 때문에, 입력 받은 문자열을 대문자로 바꾸어 주었다.

 

 

# process

단어의 개수만큼 반복하며 알파벳이 딕셔너리에 존재하지 않는다면 현재 탐색 중인 알파벳을 key로 만들고, value로 1을 지정한다. (line 8-9)

단어가 딕셔너리에 존재하는 경우 value 값을 1증가 한다. (line 10-11)

 

 

# output

가장 큰 알파벳을 찾아야하므로 가장 큰 값을 저장하는 리스트를 생성한다. (line 14)

리스트의 첫 번째 요소는 알파벳을 가지고, 두 번째 요소는 알파벳의 빈도수를 가진다.

 

딕셔너리의 크기만큼 반복하며, 딕셔너리의 value의 값이 리스트의 빈도수보다 크다면, 딕셔너리의 key와 value를 각각 리스트의 0번, 1번 요소에 넣는다. (line 16-18)

 

딕셔너리의 value와 리스트의 빈도수가 동일하다면 리스트의 0번을 '?'로 지정한다. (line 19-20)

 

 

 

발생한 문제 & 해결 방안

딕셔너리를 오랜만에 사용하여 문제를 해결하는데 다소 시간이 소요되었다.

 

처음 구현 시 output에서 딕셔너리의 요소를 그냥 가져와 사용할 때 코드가 많이 복잡하였으나, line 15와 같이 요소를 받아옴과 동시에 key와 value 값으로 나누어 코드가 더욱 간결해지고 수월하게 문제를 해결할 수 있었다.

 

 

 

 

 

해당 코드는 에디터가 코드 연습을 위해 직접 작성하였습니다.

혹시 오류가 있거나 더 좋은 코드 방향성을 아시는 분은 댓글로 남겨주시면 감사하겠습니다..!

공유하기

facebook twitter kakaoTalk kakaostory naver band