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)도 쓸 수 있을 것 같다.