/* 문제 */
다솜이는 은진이의 옆집에 새로 이사왔다. 다솜이는 자기 방 번호를 예쁜 플라스틱 숫자로 문에 붙이려고 한다. 다솜이의 옆집에서는 플라스틱 숫자를 한 세트로 판다. 한 세트에는 0번부터 9번까지 숫자가 하나씩 들어있다. 다솜이의 방 번호가 주어졌을 때, 필요한 세트의 개수의 최솟값을 출력하시오. (6은 9를 뒤집어서 이용할 수 있고, 9는 6을 뒤집어서 이용할 수 있다.)
구현 문제다. 이 문제의 포인트는 6과 9를 서로 뒤집어서 사용할 수 있다는 것이다. 즉 한 세트만 있어도 6 두 개, 9 두 개, 혹은 6 한 개와 9 한 개를 만들 수 있다.
방 번호에 중복된 숫자가 있다면 새로운 세트가 필요하다. 따라서 각 숫자의 총 개수를 세고 6과 9만 따로 처리했다. 내가 생각한 방법은
6 6 6 6 6 6 9 9 9
와 같이 6과 9를 하나씩 매칭하여 한 세트씩 쓰고, 남은 6이나 9를 2로 나눠 필요한 세트 수를 계산하는 것이다(뒤집어서 쓸 수 있으므로 두 개당 한 세트 필요).
# 정답 코드
import math
n = input()
count = [0] * 10
for i in n:
count[int(i)] += 1
if count[6] > count[9]:
count[6] = math.ceil((count[6] - count[9]) / 2) + count[9]
count[9] = 0
else:
count[9] = math.ceil((count[9] - count[6]) / 2) + count[6]
count[6] = 0
print(max(count))
정답을 맞힌 후 찾아보니 그냥 6의 개수와 9의 개수를 더해 2로 나누는 더 간편한 방법이 있었다. 단순하게 생각하는 것이 좋겠다.
728x90
'Algorithm' 카테고리의 다른 글
DFS(깊이 우선 탐색) & BFS(너비 우선 탐색) (0) | 2023.02.16 |
---|---|
[14499] 주사위 굴리기 - Python (0) | 2023.02.14 |
[13305] 주유소 - Python (0) | 2023.02.09 |
[1541] 잃어버린 괄호 - Python (0) | 2023.02.09 |
[11399] ATM - Python (0) | 2023.02.09 |