본문 바로가기
코딩/백준-자바

[자바] 백준 1049번: 기타줄

by 철없는민물장어 2022. 12. 31.
728x90
반응형

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

 

1049번: 기타줄

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

www.acmicpc.net

 


술술 풀다가 실수해서 틀릴것 같은 문제

 

패키지가격과 낱개가격의 최솟값을 구해놓은 후,

 

1. 낱개*6개 가격이 패키지가격보다 싼 경우, 기타줄 개수만큼 모두 낱개로 구매

2. 패키지로 사고, 나머지 줄은 낱개로 사는 경우

3. 패키지로 사고, 나머지 줄도 패키지로 사는 경우

 

이 세가지 경우로 나누어 풀었다.

 


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

public class P1049 {

	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_package = 1001;
		int min_single = 1001;

		for (int i = 0; i < m; i++) {
			st = new StringTokenizer(br.readLine());
			int current_package = Integer.parseInt(st.nextToken());
			int current_single = Integer.parseInt(st.nextToken());
			if (min_package > current_package)
				min_package = current_package;
			if (min_single > current_single)
				min_single = current_single;
		}
		
		if(min_single*6<=min_package) {
			System.out.println(min_single*n);
		}
		else {
			if(n%6==0) {
				System.out.println(min_package*(n/6));
			}
			else {
				if((n%6)*min_single <min_package) {
					System.out.println(min_single*(n%6)+min_package*(n/6));
				}
				else {
					System.out.println(min_package*((n/6)+1));
				}
			}
		}
	}

}
728x90
반응형

댓글