https://www.acmicpc.net/problem/1157
알파벳으로 이루어진 단어가 주어지면, 그중 가장 많이 쓰인 알파벳을 찾아내는 문제이다.
만약 가장 많이 사용된 알파벳의 수가 동일하면 '?'를 출력한다.
# 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 값으로 나누어 코드가 더욱 간결해지고 수월하게 문제를 해결할 수 있었다.
해당 코드는 에디터가 코드 연습을 위해 직접 작성하였습니다.
혹시 오류가 있거나 더 좋은 코드 방향성을 아시는 분은 댓글로 남겨주시면 감사하겠습니다..!
[Baekjoon] 백준 10872번 문제 풀이 (Python) (0) | 2021.08.05 |
---|---|
[Baekjoon] 백준 5086번 문제 풀이 (Python) (0) | 2021.08.04 |
[Baekjoon] 백준 7568번 문제 풀이 (Python) (0) | 2021.08.02 |
[Baekjoon] 백준 1065번 문제 풀이 (Python) (0) | 2021.07.24 |
[Baekjoon] 백준 2798번 문제 풀이 (Python) (0) | 2021.07.23 |