숲별 2022. 9. 15. 13:54
728x90

<문제>

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

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

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

 

<입력>

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

 

<출력>

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

 

<아이디어>

더 적은 개수의 봉지를 가져가려면 5kg짜리가 많아야한다.

5kg짜리 봉지 개수를 a(출력)와 x, 3kg짜리 봉지 개수를 b(출력)와 y로 한다.

 

x를 0부터 5000/5까지 돌린다. (정수가 아니면 돌릴 수 없다면 그냥 5000까지 하고 5x가 N보다 크면 중지)

a=0,b=0으로 지정

   x를 돌리는 그 안에 y를 1부터 5000/3까지 돌린다.(마찬가지 정수문제 확인, 3y>N이면 중지)

   if 5x+3y=N라면

   a=x, b=y로 하고

   y를 돌리는 것 종료

x돌리기 종료(x가 큰 숫자가 자동으로 마지막에 덮어서 출력될 것)

 

if a=0&b=0라면

-1을 출력

그렇지 않다면

a+b를 출력

 

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

백준 - 2839 (Python) -설탕 배달 - https://naver.me/Fv7ogVa4

 

백준 - 2839 (Python) -설탕 배달

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

velog.io

 

개발자 관련검색을 하다보면 백준을 하는 사람들을 종종 보게 된다. '막연하게 나도 나중에 해봐야겠다.'하고 넘겼었는데 하다가 어제 우연히 들어간 블로그의 다음글(상단 링크)이 백준이길래 호기심에 들어가봤다.

'어? 그냥 수학문제 같은 느낌이네?'라는 게 내가 본 백준의 첫인상이었다.

나는 아직 언어도 제대로 배우지 않은 상태라 내가 백준을 시작하지 못 할 거라고 생각했는데 이런 문제면 지금도 풀 수는 있을 거라 생각되서 글을 남기기로 했다.

 

아직 제대로 배우지 않은 내가 지금도 풀 수 있겠다고 생각하는 건

내가 10대 초반에 정보처리기능사를 따면서 약간은 발을 담궈본 적이 있기 때문일지도 모르겠다.

다만 아직 코딩을 짤 시력은 안되니까 일단 그냥 윤곽만 대략 적어놓기로 했다.

아직 2문제 밖에 안봤지만 약간 '학교에서 수학을 배우는 이유를 논리적 사고력을 키우기 위해서'라는 말이 생각나는 문제들이었다. (코딩테스트라는 게 사실은 일종의 지능 검사였던 건가..?) 차이점이라면 구체적인 숫자를 넣어 식을 세워 계산을 하진 않는다. 컴퓨터이기 때문에 모든 가능성을 돌려볼 수 있으니 경우의 수를 다 대입해 답을 구하는 방식이랄까? 나는 일단 지금은 그 대입해볼 방법에 대한 아이디어만 생각해보고 완벽하진 않더라도 기록하려고 한다.