코딩테스트/기초

백준 2839 설탕배달 - python

math_tbro 2022. 1. 8. 14:47

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

 

2839번: 설탕 배달

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

www.acmicpc.net

풀이:

n = int(input())

cnt =0

while n >= 0 :
    if n%5 == 0:
        cnt += n//5
        print(cnt)
        break
    
    n -= 3
    cnt += 1
else : 
    print(-1)

 

틀렸다~~~ 

 

케이스 계속 나누면서 if 에 if를 넣고 삼항연사자 넣고 또 if elif 넣으면 어거지로 풀리기는 할텐데 하다가

아니다 싶어서 풀이를 봤다.

 

문제 자체에서 요구하는건 일단 5kg짜리 봉지에 개수를 구하고 그 다음 3kg짜리가 얼마나 필요하냐 이다.

 

이걸 5의 배수와 3의 배수 이렇게 나눠서 생각하면 내가 틀린과정이 되므로 조금 사고를 다르게 해야한다.

 

예를 들어 21kg 가 있다면 결과적으로 5*3 + 3 *2 로 총 5개가 필요하다. 이를 조금 다르게 생각해보면 21 에서 3의 배수만큼 뺀 값이 5로 나누어 떨어지게 하면 되는 것이다.

 

따라서 21 - 6 = 15 -> 15/5 = 3 으로 3+2 = 5개를 구할 수 있다.

 

코드를 보면 if 문을 반복해 주기 위해 while을 사용했다.

 

만일 5로 나누어 떨어진다면 n//5 를 이용해 몫을 출력하고 멈춘다. 

만일 5로 나누어 떨어지지 않았다면 3을 빼주고 3을 뺄 때마다 cnt 값은 하나씩 추가된다.

 

만일  3과 5로 다 담을 수 없다면 입력값이 3의 배수가 아니라는 뜻이고 이는 else 로 넘어가는 조건이 된다.

이때 -1을 출력하면서 정리할수 있따.