[BOJ] 2839 - 설탕 배달

황규빈·2022년 7월 4일
0

알고리즘

목록 보기
30/33

💎 문제


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

상근이는 귀찮기 때문에, 최대한 적은 봉지를 들고 가려고 한다. 예를 들어, 18킬로그램 설탕을 배달해야 할 때, 3킬로그램 봉지 6개를 가져가도 되지만, 5킬로그램 3개와 3킬로그램 1개를 배달하면, 더 적은 개수의 봉지를 배달할 수 있다.

상근이가 설탕을 정확하게 N킬로그램 배달해야 할 때, 봉지 몇 개를 가져가면 되는지 그 수를 구하는 프로그램을 작성하시오.

💎 입력


첫째 줄에 N이 주어진다. (3 ≤ N ≤ 5000)

💎 출력


상근이가 배달하는 봉지의 최소 개수를 출력한다. 만약, 정확하게 N킬로그램을 만들 수 없다면 -1을 출력한다.

💎 풀이 방법


파이썬으로 풀어본 쉬운 알고리즘 그리디 문제이다. 앞으로 코딩테스트를 준비하면서 파이썬으로 풀어볼 수 있도록 준비하여야 쉬운 문제에서 짧은 코딩으로도 해결할 수 있고자 파이썬을 이용해보며 풀어본다!!

이 문제는 간단하게 어떤 경우에 가장 최적의 결과를 보여줄 수 있는지를 고민하고 쉽게 풀어낼 수 있는 문제이다. 3과 5의 무게의 봉지만 존재하기 때문에 크기가 큰 5를 활용하여 결과에 어떻게 반영되는지를 확인하기만 해주면 되는 문제이다. 따라서 입력받은 값을 계속해서 5로 나누어떨어지는지 검사하고 그렇지 않다면 3을 빼주어 결과를 확인해 나간다. 이 때 count 변수를 통해 결과를 반환할 수 있도록 한다. 만약 반복문을 지나가면서 마무리가 되지 않는다면 출력에서 보았듯이 -1을 반환해주면 된다.

파이썬을 처음 써보기 때문에,,, int(input()) 입력인 것을 잊지 말자!!

if N % 5 == 0 :
     count += N // 5
     print(count)
     break
N -= 3
count += 1

이게 3과 5의 무게의 봉지에 따른 결과를 확인할 수 있는 코드이다!!
일부러 파이썬으로 풀기 때문에 쉬운 문제를 풀었다.

💎 전체 코드


N = int(input())

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

💎 고민


약 2달만의 새로운 게시글이다..! 코딩테스트를 몇개보면서 방학부터는 파이썬으로 코딩테스트 준비를 좀 더 체계적으로 해야지라고 생각했었다. 책을 사고 그에 맞게 코딩테스트에서 어떤 유형들이 나오는지 단계별로 공부해보고자 한다. 앞으로는 velog에도 유형들에 맞게 정리해보고자 한다.

2달동안 게시글도 안썼을 뿐더러 깃허브에도 한동안 커밋이 없었는데,,, 그동안 개발자와 기획(PM)에 경계에서 진로를 많이 고민했던 것 같다. PM 기회가 주어질 수 있는 면접에 떨어지면서 앞으로 준비를 어떻게 해야하지 라는 생각이었는데 일단 모조리 다해야겠다는 생각이 방학때 다시금 들었던 것 같다. 방학동안 성장하기 위해 했던 부분들을 velog에 여과없이 쓸 수 있는 기회를 많이 만들어보고 싶다.

사실 알고리즘 문제를 풀려고 했던 것도 이러한 고민거리를 좀 풀어내고자 글을 작성했던 것 같다😢 이제 4학년도 한학기가 남았다,,,!! 플젝이랑 코테랑 자격증들 이것저것 잘 마무리하는 방학을 보내기 위해 약 2달동안 열심히 해보쟈

화이팅~~!!

profile
안녕하세욤

0개의 댓글