백준 :: 설탕 배달 <2839번>

혜 콩·2022년 5월 22일
0

알고리즘

목록 보기
1/61
post-thumbnail

> 문제 <

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

> 아이디어 <

🚩mine (wrong)
1. n을 5로 먼저 나눈 뒤, 나머지가 0 == 몫 출력 // 나머지 != 0: 3으로 나누어본다
-> ㄱ. 3으로 나눈 나머지값이 0일때, 그대로 5의 몫과 3일때의 몫 합해서 출력
-> ㄴ. 3으로 나눈 나머지값이 0이 아닌 다른 값일때,
------> a. n을 3으로 나눠보기. 나머지가 0이면, 몫 출력
------> b. n을 3으로 나눈 나머지가 0이 아니면, -1 출력

🚩clone (success)
n이 0 이상인 조건 하에 while문
1. n이 5로 나누어 떨어진다면, 몫 출력 (best option)
2. 5로 나누어 떨어지지 않는다면, n -= 3 (3kg 봉지) 해서 봉지 수(p) += 1 반복
--> n -= 3 후, 변경된 n값이 5의 배수라면 5로 나눠서 p에 몫 + 해주기

5kg(큰것)로 담는 것이 가장 best니까!

> 코드 <

# mine (wrong) ---> n = 11 입력시, -1 나오는 오류 발생

n = int(input())            # 설탕 배달 양

r5 = n % 5         # 5로 나눈 나머지
if r5 == 0:
    print(n // 5)
else:
    r3 = r5 % 3
    if r3 == 0:
        print((n // 5) + (r5 // 3))
    else:
        if n % 3 == 0:
            print(n // 3)
        else:
            print(-1)

-------------------------------------------------------------

# success
n = int(input())            # 설탕 배달 양
p = 0                       # 봉지 수

while n >= 0:
    if n % 5 == 0:          # 5로 나누어 떨어질 때 , 3으로만 나누어져 n = 0일때도 이 if문은 참이 되어 p 출력 (0을 5로 나누어도 나머지는 0이니까)
        p += n // 5
        print(p)
        break
    n -= 3
    p += 1
if n < 0:
    print(-1)
profile
배우고 싶은게 많은 개발자📚

0개의 댓글