백준 문제풀이/구현

[백준] 2839 설탕 배달 - python

peach_h 2023. 4. 5. 20:14

https://www.acmicpc.net/problem/2839

 

2839번: 설탕 배달

상근이는 요즘 설탕공장에서 설탕을 배달하고 있다. 상근이는 지금 사탕가게에 설탕을 정확하게 N킬로그램을 배달해야 한다. 설탕공장에서 만드는 설탕은 봉지에 담겨져 있다. 봉지는 3킬로그

www.acmicpc.net

처음에 내가 짠 계획

1. 가장 적게 들기 위해 더 큰수인 5로 나눈다
2. 5로 나누고 나온 나머지를 3으로 나눴을 때, 나누어 떨어지는 지 확인
-> 안나눠 떨어지면, 5로 나눈 몫을 계속 줄여가며 체크하고 싶음
 근데 어떻게 짜야할지 모르겠다 !!
3. 5로만 나누어 떨어지면 그것이 답
4. 3으로만 나누어 떨어지면 이것도 답일 수 있음

 

구현 시도

나름 생각한대로 짜보려고 노력했는데 , , 만약 3으로도 안 나눠떨어졌을 때

5로 나누는 걸 어떻게 개수를 줄일지 모르겠는 것이다.

N = int(input())
# 젤 적게 들려면 큰거부터
# 5로 나눈 나머지
ans = 0
total = []
if N % 5 == 0 :
    ans = N // 5
    total.append(ans)
if N % 3 == 0:
    ans = N // 3
    total.append(ans)
if ans == 0 :
    temp = 5
    while temp != 0:
        # N을 temp로 나눈 나머지가 있다면
        if N % temp:
            # 나머지가 3으로 쪼개지는지 확인해보자
            three = N % temp
        if three:
            # 5로 나눈 나머지가 3으로 나누어 떨어지면
            if three % 3 == 0:
                # ans = 5로 나눈 몫 + 3으로 나눈 몫
                ans = temp + (three//3)
            # 안나눠떨어지면 , ,
            else:

 

정답코드
N = int(input())
bag = 0
while N >= 0:
    if N % 5 == 0:
        bag += N // 5
        print(bag)
        break
    N -= 3
    bag += 1
else:
    print(-1)

반복문을 계속 돌려서 5로 나누어 질때까지 반복

안 나누어 떨어지면 3씩 줄이고 가방에 하나씩 넣기

설탕 무게가 0 이하가 되도록 안나눠떨어지면 -1 출력

 

이런 중학교 수학 같은 문제를 곤란해하다니 . .

ㄷㅓ 열심히 해야겠다.