백준(Java)/23년 8월

[Java] 백준 - 1049번: 기타줄

C0MPAS 2023. 8. 23. 15:29

8월 23일(수) - 그리디 알고리즘 (1049번)

 

1049번: 기타줄

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

www.acmicpc.net

ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ

 

문제점

ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ

 

풀이 - 2

(풀이출처 -> https://m.blog.naver.com/yu_jin456/222831783180)

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

import java.util.StringTokenizer;

public 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 min_6 = 1000;
        int min_1 = 1000;

        for(int i=0; i<M; i++)
        {
            st = new StringTokenizer(br.readLine());
            min_6 = Math.min(min_6, Integer.parseInt(st.nextToken()));
            min_1 = Math.min(min_1, Integer.parseInt(st.nextToken()));
        }

        int price = Integer.MAX_VALUE;
        
        
        // 전부 패키지로만 구매
        price = Math.min(price, (N/6 + 1) * min_6);
        // 전부 낱개로만 구매
        price = Math.min(price, min_1 * N);
        // 패키지 + 낱개
        price = Math.min(price, ( (N/6)*min_6 + (N%6)*min_1 ) );

        System.out.println(price);
    }
}

ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ