일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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
- network
- 그레이들
- 다이나믹 프로그래밍
- 리트코드
- LeetCode
- CS
- TypeScript
- vscode
- git
- Javascript
- Data Structure
- Database
- react
- BFS
- 자바
- 프로그래머스
- Graph
- 알고리즘
- Algorithm
- 안드로이드
- DP
- 동적 계획법
- java
- Python
- frontend
- Redux
- VIM
- DFS
- 백준
- db
Archives
- Today
- Total
늘 겸손하게
백준 2839 - 설탕 배달 ( C++ / Java ) 본문
문제 풀이
그리디 알고리즘을 적용하여 해결 가능합니다.
봉지가 담을 수 있는 무게는 3kg와 5kg 두개이고 설탕의 최대무게는 N이다.
3kg 봉지와 5kg 봉지로 무게 N을 맞출 수 있는 조합을 모두 구한 뒤
3kg 봉지 개수와 5 kg 봉지 개수의 합이 가장 작은 것을 찾아 출력하면 됩니다.
3kg 봉지와 5kg 봉지의 조합은 반복문으로 찾을 수 있습니다.
코드
Java
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
|
import java.util.Scanner;
public class Main {
public static void main(String [] args) {
Scanner sc = new Scanner(System.in);
int n;
n = sc.nextInt();
int minTotalBags = 5000;
for ( int i = 0 ; i <= n / 3 ; i++ ) {
int temp = 0;
temp += i;
if ( ( n - i*3) % 5 == 0 ) {
int fiveKiloBagNum = ( n - i * 3 ) / 5;
temp += fiveKiloBagNum;
if ( minTotalBags > temp ) minTotalBags = temp;
}
}
if ( minTotalBags == 5000 ) {
System.out.print(-1);
return ;
}
System.out.print(minTotalBags);
}
}
|
cs |
C++
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
31
32
33
|
#include <iostream>
using namespace std;
int main (void) {
int n;
const int MAX = 5000;
cin >> n;
int minTotalBags = MAX;
for ( int i = 0 ; i <= n / 3 ; i++ ) {
int temp = 0;
temp += i;
if ( ( n - i*3 ) % 5 == 0 ) {
int fiveKiloBagNum = ( n - i * 3 ) / 5;
temp += fiveKiloBagNum;
if ( minTotalBags > temp ) minTotalBags = temp;
}
}
if ( minTotalBags == MAX ) {
cout << -1;
return 0;
}
cout << minTotalBags;
return 0;
}
|
cs |
3kg 봉지가 0개인 조합에서부터 3kg 봉지가 n / 3인 조합까지 모두 한번씩 참조하는 코드입니다.
단 n - (3kg 봉지 개수) * 3값이 5로 나누어 떨어지지 않으면 정확히 N 킬로그램을 만들 수 없는 경우이므로 그냥 넘어가면 됩
니다.
minTotalBags 값이 반복문 이후에도 5000이라면 정확히 N 킬로그램을 만들 수 있는 경우가 하나도 없는 경우이므로 -1을
출력합니다.
'코딩 문제 > 백준' 카테고리의 다른 글
백준 11724 ( Java ) (0) | 2021.10.28 |
---|---|
백준 - 1260 ( C++ ) DFS 와 BFS (0) | 2021.10.02 |
백준 7570 - 줄세우기 ( Java ) (0) | 2021.09.24 |
백준 10709 - 기상캐스터 ( C++ ) (0) | 2021.09.08 |
백준 16395 - 파스칼의 삼각형 ( C++ ) (0) | 2021.09.05 |