BOJ::1049 기타줄

https://www.acmicpc.net/problem/1049


그리디알고리즘 문제

각각의 상황에서 최선의 선택을 하면 된다.


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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
 
class Main{
    
    public static void main(String args[]) throws IOException{
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringTokenizer st = new StringTokenizer(br.readLine());
        int n = Integer.parseInt(st.nextToken());
        int m = Integer.parseInt(st.nextToken());
        int piece=Integer.MAX_VALUE,pack=Integer.MAX_VALUE;
        
        for(int i = 0 ; i < m ; i++){
            st = new StringTokenizer(br.readLine());
            int x = Integer.parseInt(st.nextToken());
            int y = Integer.parseInt(st.nextToken());
            
            //pack과 piece에 각각 최소값 입력 받는다.
            if(x < pack){
                pack = x;
            }
            if(y < piece){
                piece = y;
            }
        }
        
        
        int val = Math.min(pack, piece*6);
        int price = 0;
        
        //6개 이상일때
        while(n>=6){
            price += val;
            n-=6;
        }
        
        //6개 이하일때
        val = Math.min(pack, piece*n);
        price += val;
        System.out.println(price);
    }
}

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
34
35
36
37
38
#include <iostream>
using namespace std;
 
int min(int a, int b) {
    if (a < b) {
        return a;
    }
    return b;
}
 
int main() {
    int n, m,piece=1001,pack=1001;
    cin >> n >> m;
 
    for (int i = 0; i < m; i++) {
        int x, y;
        cin >> x >> y;
        
        if (pack > x) {
            pack = x;
        }
        if (piece > y) {
            piece = y;
        }
    }
    
    int val = min(pack, piece * 6);
    int price = 0;
    
    while (n >= 6) {
        price += val;
        n -= 6;
    }
    
    val = min(pack, piece*n);
    price += val;
    cout << price << endl;
}
cs


'BOJ::문제풀이' 카테고리의 다른 글

1149 RGB거리  (0) 2017.12.30
1065 한수  (0) 2017.12.30
1012 유기농배추  (0) 2017.12.30
1009 분산처리  (0) 2017.12.30
1004 어린왕자  (0) 2017.12.30

+ Recent posts