728x90

백준에서 가장 많이 풀린 문제 TOP 100 중 한 문제

 

2839번: 설탕 배달

문제 상근이는 요즘 설탕공장에서 설탕을 배달하고 있다. 상근이는 지금 사탕가게에 설탕을 정확하게 N킬로그램을 배달해야 한다. 설탕공장에서 만드는 설탕은 봉지에 담겨져 있다. 봉지는 3킬로그램 봉지와 5킬로그램 봉지가 있다. 상근이는 귀찮기 때문에, 최대한 적은 봉지를 들고 가려고 한다. 예를 들어, 18킬로그램 설탕을 배달해야 할 때, 3킬로그램 봉지 6개를 가져가도 되지만, 5킬로그램 3개와 3킬로그램 1개를 배달하면, 더 적은 개수의 봉지를 배달할 수

www.acmicpc.net

1월 20일에 파이썬으로 풀어보고

n = int(input())
five = n // 5
three = 0
find = False
while five >= 0:
    if five * 5 + three * 3 == n:
        find = True
        break
    while five * 5 + three * 3 <= n:
        if five * 5 + three * 3 == n:
            find = True
            break
        three += 1
    if find:
        break
    five -= 1
if find:
    print(five + three)
else:
    print(-1)

두 달 반 후인 4월 6일에 또 다시 풀어보았다.

이번에는 C++로 풀어봤다.

#include <iostream>
using namespace std;


int main() {
	int n;
	cin >> n;
	int count = 0;
	while (true) {
		if (n < 0)
			break;
		if (n % 5 == 0) 
			break;
		else {
			n -= 3;
			count++;
		}
	}
	if (n < 0) cout << -1;
	else cout << count + n / 5;
	return 0;
}

3kg 짜리 설탕을 최대한 적게 쓰고 5kg 짜리 설탕을 최대한 많이 써야되기 때문에 n이 5로 나눠떨어질 때까지 3을 빼주었다. 빼 줄 때마다 3kg짜리 설탕을 한 봉지 사용하는 것이기 때문에 count 변수에 1씩 더해주었다. 그 과정에서 n이 음수가 되면 바로 while문을 빠져나와 -1을 출력하게 했고 5로 나눠떨어지면 while문을 빠져나와 count와 n/5를 더해주었다. count는 3kg짜리 설탕의 개수이고 n / 5는 5kg짜리 설탕의 개수이다. 그 둘을 더해주면 된다.

728x90

'알고리즘 문제' 카테고리의 다른 글

[백준] 5622번 다이얼  (0) 2020.01.20
[백준] 1316번 그룹 단어 체커  (0) 2020.01.20
[백준] 4344번 평균은 넘겠지  (0) 2020.01.20
[백준] 10172번 개  (0) 2020.01.20
[백준] 10988번 팰린드롬인지 확인하기  (0) 2020.01.19

+ Recent posts