📍문제 링크
https://www.acmicpc.net/problem/1475
📍알고리즘 분류
- 구현
📍문제 풀이
1 ~ 1,000,000 사이의 숫자가 주어진다. 0 ~ 9 의 숫자들이 쓰인 횟수 중 가장 많은 횟수를 구하라
- 단, 6, 9 는 뒤집어서 서로 대체할 수 있다
각 숫자들이 쓰인 횟수를 딕셔너리에 기록하고, 6과 9의 경우, 평균을 구해 올림하여 기록한다.
그리고 딕셔너리를 순회하며 최댓값을 구하면 된다
📍코드 (Python)
import math
# 숫자를 입력받고 하나씩 쪼개 배열에 저장
num_arr = list(map(int, list(input())))
# 딕셔너리에 0~9 까지 0의 값을 할당
dic = {num: 0 for num in range(0, 10)}
for x in num_arr:
dic[x] += 1
dic[9] = math.ceil((dic[9] + dic[6]) / 2)
dic[6] = dic[9]
answer = 0
for val in dic.values():
answer = max(answer, val)
print(answer)
📍리뷰
- Pyhton에서 숫자를 문자열 형태로 입력받아서 한 글자씩 쪼개서 정수로 바꾼다음 배열에 저장하는 과정이 생각보다 복잡한 것 같다. (1번째 줄)
더 좋은 방법이 있는지 알아봐야겠다. list()를 2 번 사용하는것보다 더 좋은 방법이 있을 것 같다
- 문제풀이 코드가 자바스크립트보다 짧아서 좋다