백준 | 1475

jeonghens·2024년 5월 8일

알고리즘: BOJ

목록 보기
58/125

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()))
profile
알고리즘이나 SQL 문제 풀이를 올리고 있습니다. 피드백 환영합니다!

0개의 댓글