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); } } |
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 |