문제
다솜이는 은진이의 옆집에 새로 이사왔다. 다솜이는 자기 방 번호를 예쁜 플라스틱 숫자로 문에 붙이려고 한다.
다솜이의 옆집에서는 플라스틱 숫자를 한 세트로 판다. 한 세트에는 0번부터 9번까지 숫자가 하나씩 들어있다. 다솜이의 방 번호가 주어졌을 때, 필요한 세트의 개수의 최솟값을 출력하시오. (6은 9를 뒤집어서 이용할 수 있고, 9는 6을 뒤집어서 이용할 수 있다.)
입력
첫째 줄에 다솜이의 방 번호 N이 주어진다. N은 1,000,000보다 작거나 같은 자연수 또는 0이다.
출력
첫째 줄에 필요한 세트의 개수를 출력한다.
풀이
0부터 8까지 9개의 배열을 만들어서, 6번은 2개를 채우고 (9와 동시에 사용가능하므로) 나머지는 1로 채운다.
그리고 다시 set를 구입하는게 모든 배열에 +1을 하는것이므로,
방 번호를 처음부터 끝까지 탐색하면서, 필요한 숫자에 해당하는 배열에 저장된 값을 1씩 내리다가, 0이하로 내려가면, 새로 set를 구입(모든 배열에 +1)을 해주면서, set를 구입할 때 마다 count를 센것을 출력한다.
def addset(arr, count):
for i in range(9):
arr[i] += 1
arr[6] += 1
count += 1
return count
numstr = input()
arr = [1 for _ in range(9)]
arr[6] = 2
count = 1
for num in numstr:
if(int(num) == 9):
if(arr[6] > 0):
arr[6] -= 1
else:
count = addset(arr, count)
arr[6] -= 1
else:
if(arr[int(num)] > 0):
arr[int(num)] -= 1
else:
count = addset(arr, count)
arr[int(num)] -= 1
print(count)
'알고리즘' 카테고리의 다른 글
[파이썬 | BOJ | 2579] 계단 오르기 (0) | 2019.12.26 |
---|---|
[파이썬 | BOJ | 1912] 연속합 (0) | 2019.12.26 |
[파이썬 | BOJ | 18228] 펭귄추락대책위원회 (0) | 2019.12.25 |
[파이썬 | BOJ | 12865] 평범한 배낭 (0) | 2019.12.24 |
[파이썬 | BOJ | 11722] 가장 긴 감소하는 부분 수열 (0) | 2019.12.24 |