Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
Tags
- Advanced SQL
- 최대공약수
- Andrew Ng
- 유데미
- BFS
- 시퀄
- COALESCE
- 최소공배수
- 개발
- BST
- postgresql
- timestamp
- C++
- 자료구조
- 과제
- 깊이우선탐색
- udemy
- ML
- pgadmin
- AVLTree
- 알고리즘
- 데이터베이스
- 너비우선탐색
- coursera
- sql
- nullif
- self join
- Machine Learning
- CREATE TABLE
- 백준
Archives
- Today
- Total
승1's B(log n)
[백준 - C++] 2839번: 설탕 배달 본문

이번 문제는 방정식을 푸는 문제라고 할 수 있겠다. 알아둬야 할 점은 최소 개수를 출력해야 하므로 최대한 가능한 만큼 5킬로그램짜리 봉지로 채우는 것이 필요하다는 것이다.
바로 풀이로 이동
#include <iostream>
using namespace std;
int main(void){
int I; //이동시켜야 하는 설탕 그램
int x, y;
int xmax = -1; //3kg 봉지의 개수
int ymax = -1; //5kg 봉지의 개수
cin >> I;
for(y = I; y >= 0; y--) //우선 5kg짜리 봉지의 개수부터 구해야 최소 개수를 구할 수 있음
{
if(5 * y <= I) //5kg짜리 봉지의 개수*5가 이동시켜야 하는 설탕보다 작거나 같을 때
{
for(x = 0; x < I; x++) //3kg짜리 봉지의 수 구하기
{
if(5 * y + 3 * x == I) //만약 5*5kg 봉지 + 3*3kg 봉지일 때
{
xmax = x; //3kg 봉지의 개수는 x
ymax = y; //5kg 봉지의 개수는 y
break; // inner 반복문 탈출
}
}
}
if(xmax != -1) //만약 3kg 봉지의 개수가 -1이 아닐때, 즉 처음 시작과 다를 때
break; //outer 반복문 탈출
}
if(xmax == -1 && ymax == -1) //만약 3kg, 5kg 봉지의 개수가 -1이면 -1 출력
cout << -1 << endl;
else if(xmax != -1 && ymax != -1)
cout << xmax + ymax << endl; //3kg, 5kg 봉지의 개수가 -1이 아니면 3kg 봉지 수 + 5kg 봉지 수 출력
else if(xmax == -1 && ymax != -1)
cout << ymax << endl;
else
cout << xmax << endl;
return 0;
}
5kg 짜리 봉지를 넣을 수 있는 한 최대한 넣어야 최소 봉지 개수를 구할 수 있으므로 Outer loop를 5kg 봉지의 개수를 최대에서 줄여나가는 식으로 구성해보았다.
https://www.acmicpc.net/problem/2839
2839번: 설탕 배달
상근이는 요즘 설탕공장에서 설탕을 배달하고 있다. 상근이는 지금 사탕가게에 설탕을 정확하게 N킬로그램을 배달해야 한다. 설탕공장에서 만드는 설탕은 봉지에 담겨져 있다. 봉지는 3킬로그
www.acmicpc.net
'Problem Solving' 카테고리의 다른 글
[백준 - C++] 10845번: 큐 (0) | 2022.08.14 |
---|---|
[백준 - C++] 10828번: 스택 (0) | 2022.08.14 |
[백준 - C++] 1966번: 프린터 큐 (0) | 2022.08.14 |
[백준 - C++] 1747번: 소수&팰린드롬 (0) | 2022.08.14 |
[백준 - C++] 11729번: 하노이 탑 이동 순서 (0) | 2022.08.14 |