티스토리 뷰
문제
https://www.acmicpc.net/problem/1049
언어
자바 Java
로직
가격 저장
6개 묶음의 가격과 낱개 가격을 저장합니다. 브랜드별로 저장할 필요 없이 최저 값만 저장하면 됩니다.
int bundle = Integer.MAX_VALUE;
int piece = Integer.MAX_VALUE;
for (int i = 0; i < m; i++) {
input = br.readLine().split(" ");
int a = Integer.parseInt(input[0]);
int b = Integer.parseInt(input[1]);
bundle = bundle > a ? a : bundle;
piece = piece > b ? b : piece;
}
계산
구매해야 하는 수량이 6개 이상일 때와 아닐 때를 구분하여 계산합니다.
묶음 가격과 낱개 가격을 비교하여 더 적은 값이 드는 값을 sum에 저장하고 남은 개수 n에서 구매 개수만큼 빼주면 됩니다.
int sum = 0;
while (n > 0) {
if (n < 6) {
if (bundle > piece * n) {
sum += piece * n;
} else {
sum += bundle;
}
break;
} else {
if (bundle > piece * 6) {
sum += piece * 6;
} else {
sum += bundle;
}
n -= 6;
}
}
최종 코드
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String[] input = br.readLine().split(" ");
int n = Integer.parseInt(input[0]);
int m = Integer.parseInt(input[1]);
int bundle = Integer.MAX_VALUE;
int piece = Integer.MAX_VALUE;
for (int i = 0; i < m; i++) {
input = br.readLine().split(" ");
int a = Integer.parseInt(input[0]);
int b = Integer.parseInt(input[1]);
bundle = bundle > a ? a : bundle;
piece = piece > b ? b : piece;
}
int sum = 0;
while (n > 0) {
if (n < 6) {
if (bundle > piece * n) {
sum += piece * n;
} else {
sum += bundle;
}
break;
} else {
if (bundle > piece * 6) {
sum += piece * 6;
} else {
sum += bundle;
}
n -= 6;
}
}
System.out.println(sum);
}
}