백준공부/java

[백준] 1049번 기타줄 문제! (silver 4

gomduri43 2022. 8. 8. 18:19

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.StringTokenizer;

public class Main {
	public static void main(String[] args)  throws IOException {
		BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
		BufferedWriter bw=new BufferedWriter(new OutputStreamWriter(System.out));
		StringTokenizer st=new StringTokenizer(br.readLine());

		int n=Integer.parseInt(st.nextToken());
		int m=Integer.parseInt(st.nextToken());
		int minOfPack=1000;	//범위가 1000이하이므로, 
		int minOfOnce=1000; //위와 동일
		int count=0;
		//생성 및 젤 작은 값 구하기, 
		for(int i=0; i<m; i++) {
			st=new StringTokenizer(br.readLine());
			int pack=Integer.parseInt(st.nextToken());
			int once=Integer.parseInt(st.nextToken());

			if(pack<minOfPack) {
				minOfPack=pack;
			}
			if(once<minOfOnce) {
				minOfOnce=once;
			}
		}
		//낱개가 젤 쌀 경우,
		if(6*minOfOnce<=minOfPack) {
			bw.write(minOfOnce*n+"");
		}
		//패키지가 낱개때보다 싸면서, n이 6의 배수일 경우
		else if(n%6==0 && 6*minOfOnce>minOfPack) {
			bw.write(n/6*minOfPack+"");
		}
		else {
			while(true) {
				if(n>=6) {
					n-=6;
					count+=minOfPack;
				}
				else {
					if(n*minOfOnce<minOfPack) {
						count+=n*minOfOnce;
						break;
					}
					else {
						count+=minOfPack;
						break;
					}
				}
				
			}
			bw.write(count+"");
		}
		bw.flush();
	}
	
}