Algorithm/백준

[BAEKJOON] 1475번: 방 번호

NegotiationMan 2023. 9. 4. 22:50

문제

다솜이는 은진이의 옆집에 새로 이사왔다. 다솜이는 자기 방 번호를 예쁜 플라스틱 숫자로 문에 붙이려고 한다.

다솜이의 옆집에서는 플라스틱 숫자를 세트로 판다. 세트에는 0번부터 9번까지 숫자가 하나씩 들어있다. 다솜이의 번호가 주어졌을 , 필요한 세트의 개수의 최솟값을 출력하시오. (6 9 뒤집어서 이용할 있고, 9 6 뒤집어서 이용할 있다.)

 

코드

import sys

num = [0] * 10
ans = 0

for i in sys.stdin.readline().rstrip():
    num[int(i)] += 1

for i in range(10):
    if i == 6 or i == 9:
        continue
    else:
        ans = max(ans, num[i])

print(max(ans, (num[6] + num[9] + 1) // 2))

 

나의 생각

(num[6] + num[9] + 1) // 2에서 1을 더하는 이유는 6과 9를 동일한 숫자로 처리할 때, 만약 6과 9가 모두 홀수 개일 경우를 고려하기 위해서이다.

만약 6 9 모두 홀수 개인 경우, 이를 하나 더해서 짝수 개로 만들어야 한다.

6과 9가 짝수 개인 경우, 하나 더 해도 똑같은 값이 나온다. 

  • math.ceil((num[6]+nnum[9])/2)도 쓸 수 있을 것 같다.