[백준/BOJ] 1049. 기타줄 [Silver 4]

jychan99·2023년 9월 25일
0

  1. 기타줄
    문제출처 : https://www.acmicpc.net/problem/1049
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;

public class Main {
    static BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
    static StringTokenizer st;
    static int N,M,pack_cnt=0,each_cnt=0,pack_min=1000,each_min=1000,result=0,pack=0, each=0;

    public static void main(String args[])throws IOException{
        st = new StringTokenizer(br.readLine()," ");
        N = Integer.parseInt(st.nextToken());
        M = Integer.parseInt(st.nextToken());

        pack_cnt=N/6;
        each_cnt=N%6;
        for(int i=0;i<M;i++){
            st = new StringTokenizer(br.readLine()," ");

            pack = Integer.parseInt(st.nextToken());
            each = Integer.parseInt(st.nextToken());
            if(pack_min>=pack){
                pack_min = pack;
            }
            if(each_min>=each){
                each_min = each;
            }
        }
        
        if(pack_min<each_min*6){
            result += pack_cnt * pack_min;
            if(pack_min< each_cnt*each_min){
                result += pack_min;
            }else{
                result += each_cnt*each_min;
            }
        }else{
            result += each_min * N;
        }
        
        
        System.out.println(result);
    }
}

문제에 주어진 예제 입력을 따라가다보면 충분히 풀 수 있는 문제였다.
나도 풀면서 간과하고 있던게있는데, 만약 17개를 사야한다면, 12개(패키지2개) +5개(낱개)를 사는거 보다, 그냥 패키지 3개를 사서 1개는 안쓰는것이 더 싸게먹힌다는것이다.
기타줄을 남기면 안된다는 말은 없기때문이다.

이 점을 유의해서 작성하면된다. 케이스는 3개정도 있다.

  • 낱개 6개가 패키지1개보다 저렴해서 낱개로 N개를 사는경우
  • 패키지가 저렴해서 패키지를 살 수 있을 만큼 사고, 나머지는 낱개로 사는경우
  • 아에 패키지로 다 사버리는것이 저렴해서 패키지만 사는경우
profile
내가 지금 두려워 하고 있는 일이 바로 내가 지금 해야 할 일이다. 🐥

0개의 댓글