알고리즘/백준

1049번 : 기타줄

코딍코딍 2022. 6. 28. 13:01

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

 

1049번: 기타줄

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

www.acmicpc.net

 

 

문제

 

 

코드

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        int m = sc.nextInt();   sc.nextLine();
        int pkMin=1000;
        int piMin=1000;
        for(int i=0;i<m;i++) {
            int a = sc.nextInt();
            int b = sc.nextInt();   sc.nextLine();
            if(a<pkMin) pkMin=a;
            if(b<piMin) piMin=b;
        }
        int x = (n/6)*pkMin + (n-(n/6)*6)*piMin;
        int y = ((n/6)+1)*pkMin;
        int z = n*piMin;

        if(x<=y && x<=z) System.out.println(x);
        else if(y<=x && y<=z) System.out.println(y);
        else System.out.println(z);

    }
}

 

 

해결방법

줄을 교체하려 할 때 최소 비용을 구하는 경우의 수는 3가지이다.

1. 패키지 + 낱개로 사는 경우
2. 패키지로만 사는 경우
3. 낱개로만 사는 경우


이렇게 3가지를 비교하기 위해 우선 패키지의 최소금액과 낱개의 최소금액을 구해야 한다.
구한뒤 단순하게 비교만 해주면 문제는 해결된다.