패스트터틀

(Baekjoon) GreedyAlgorithm - (11) 기타줄 본문

Algorithm/baekjoon

(Baekjoon) GreedyAlgorithm - (11) 기타줄

SudekY 2019. 11. 10. 15:52

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

 

1049번: 기타줄

첫째 줄에 N과 M이 주어진다. N은 100보다 작거나 같은 자연수이고, M은 50보다 작거나 같은 자연수이다. 둘째 줄부터 M개의 줄에는 각 브랜드의 패키지 가격과 낱개의 가격이 공백으로 구분하여 주어진다. 가격은 0보다 크거나 같고, 1,000보다 작거나 같은 정수이다.

www.acmicpc.net

문제를 똑바로 읽어야했다.

기타줄이 총 6줄인데 더 이상 살필요가있어? 라고 생각했다가 틀려버렸다.

N은 0~100이라고 쓰여있다.

기타줄이 어떻게 50개가 끊어지는지 의문이지만 그냥 기타가 엉청많고 끊어질때마다 다른기타를 사용하다가 이제는 더이상 안되겠다 싶어서 기타줄을 구매한경우라고 생각하자. 한마디로 crazy놈이다.

 

 

1) 6개 이하인지 6개 이상인지    // 6개 이하면 <비교> (낱개 * 개수) vs (패키지) 6개 이상이면 

2) <비교> (패키지) vs (낱개 * 6) //오름차순정리으로 비교하기

3) 전부다 계산후 남은것에서도 1번과 2번 비교 

 

 

package GreedyAlgorithm;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;

// 패키지 vs 낱개
// 6개이하 vs 6개이상
// 전부다 계산후 남은것에서도 패키지 vs 낱개 
public class _1049 {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        String[] input = br.readLine().split(" ");
        int cutoff = Integer.parseInt(input[0]), brand = Integer.parseInt(input[1]), pkg[] = new int[brand],col[] = new int[brand],cut;
        if(cutoff < 6 )
            cut = cutoff;   
        else
            cut = 6;
        for (int i = 0; i < brand; i++) { 
            input = br.readLine().split(" "); 
            pkg[i] = Integer.parseInt(input[0]);
            col[i] = Integer.parseInt(input[1])*cut;   // 1234566666..  이런식으로 비교를 해야하기 떄문에 cut을 참고하는것
        }
        Arrays.sort(pkg);
        Arrays.sort(col);
        if(pkg[0] > col[0]){ // 낱개가 더쌀경우
            System.out.println(cutoff*(col[0]/cut));
        }
        else{ // 패키지가 더 쌀경우 
            if(cut < 6)
                System.out.println(pkg[0]);
            else{ 
                if(col[0]/cut*(cutoff % 6)  < pkg[0]) // 패키지가 더 싸고 그 나머지를 구입할경우에도 낱개가 더 유리한경우
                    System.out.println(pkg[0]*(int)(cutoff/cut) + (col[0]/cut)*(cutoff % 6) );  
                else                                  // 패키지가 더 싸고 그 나머지를 구입한경우에도 패키지가 더 싼경우
                    System.out.println(pkg[0]*(int)(cutoff/cut) + pkg[0] );
            }
        }

    }
}

 

 

 

 

 

 

 

 

백준문제풀이Github : 

https://github.com/sdk0213/baekjoon-study

 

sdk0213/baekjoon-study

solve a baekjoon question. Contribute to sdk0213/baekjoon-study development by creating an account on GitHub.

github.com

 

Comments