728x90
반응형
https://www.acmicpc.net/problem/2839
문제의 접근 방법
- 설탕을 정확히 N킬로그램 배달해야 함.
- N값이 5로 나누어 떨어진다면 그대로 계산해서 출력하면 되지만, 나누어 떨어지지 않을 경우에는 3킬로그램 봉지를 사용해야 함.
- 설탕이(N) 5의 배수가 될 때까지 3킬로그램 봉지를 사용하면서 이 과정을 반복해야 함.
- 최소 개수의 봉지를 사용하기 위해 더 큰 수인 5를 기준으로 5의 배수를 만들려고 함.
내가 막혔던 부분
최소 개수를 구하기 위해서는 더 큰 값인 5킬로그램 봉지를 많이 사용해야 할 것 같은데 '9'와 같이 3으로 나누어 떨어지는 수 같은 경우에는 5킬로그램 봉지를 먼저 사용하는 대신 3킬로그램 봉지 3개를 사용해야 했다. 이 때, 어떤 알고리즘을 통해 판별할 수 있는지 고민하는 데에서 막혔다.
문제 풀이 방법
설탕 N킬로그램을 입력 받기 -> 만약 N값이 5로 나누어 떨어진다면 N을 5로 나눈 몫을 count에 누적하여 저장해준 후 그 값을 출력하고 반복문 벗어나기 -> 5의 배수가 아니라면 3킬로그램 봉지를 사용해야하는 것이므로 N값이 3만큼 줄어들고 count는 1 증가시키기 -> 위 과정을 5의 배수가 될 때까지 반복하다가 N의 값이 0보다 작다면 "-1"을 출력해주기!
소스코드
N = int(input())
count = 0
while True:
if N % 5 == 0:
count += N // 5
print(count)
break
N -= 3
count += 1
if N < 0:
print("-1")
break
728x90
반응형
'백준 write-up > 정렬 & 그리디' 카테고리의 다른 글
[백준] 동전 0 : 11047번 - Python (0) | 2021.08.09 |
---|---|
[백준] 전자레인지 : 10162번 - Python (0) | 2021.08.04 |
[백준] 키보드 이벤트 : 17254번 - Python (0) | 2021.08.03 |
[백준] 카우버거 : 15720번 - Python (0) | 2021.08.01 |
[백준] 접두사 찾기 : 14426번 - Python (0) | 2021.08.01 |