https://www.acmicpc.net/problem/1475
플라스틱 숫자 한 세트에는 0부터 9까지의 숫자가 하나씩 들어있다.
그리고 6과 9는 각각 뒤집어서 9와 6으로 사용할 수 있다.
어차피 6과 9를 제외한 나머지 숫자는 존재하는 개수만큼 세트를 사야 하므로,
6과 9에 대한 처리만 고려하면 정답을 구할 수 있다.
6과 9에 대한 처리는..
쓰이지 않은 6이나 9가 있다면 나머지 하나를 보완해 줄 수 있단 사실을 활용해야 한다.
[1] 6과 9가 총 짝수 개인 경우
6과 9를 만들기 위해 {(6의 개수) + (9의 개수)} // 2개 만큼 필요하다.
[2] 6과 9가 총 홀수 개인 경우
6과 9를 만들기 위해 {(6의 개수) + (9의 개수)} // 2 + 1개 만큼 필요하다.
두 가지 경우를 동시에 고려하면,
6과 9는 {(6의 개수) + (9의 개수) + 1} // 2개 필요하다.
코드(정답)는 다음과 같다.
import sys
num = sys.stdin.readline().rstrip()
num_cnt = {}
for i in range(10):
num_cnt[str(i)] = 0
for x in num:
num_cnt[x] += 1
# 6과 9에 대한 처리
update_value = (num_cnt["6"] + num_cnt["9"] + 1) // 2
num_cnt["6"] = update_value
num_cnt["9"] = update_value
print(max(num_cnt.values()))