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
- nullif
- 과제
- 최대공약수
- postgresql
- C++
- self join
- 유데미
- AVLTree
- Andrew Ng
- 데이터베이스
- 시퀄
- 자료구조
- BST
- timestamp
- BFS
- 백준
- 최소공배수
- pgadmin
- udemy
- ML
- Advanced SQL
- 깊이우선탐색
- 알고리즘
- Machine Learning
- CREATE TABLE
- sql
- COALESCE
- 개발
- 너비우선탐색
- coursera
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
'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 |
Comments