Til8
title: 2025-08-05 author: 강병호 date: 2025-08-05 category: TIL/강병호/2025/08 layout: post —
백준 Q1059 문제
1 번 코드에서의 에러 발생
package baekjoon;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class Q1049 {
// N M
// 패키지 가격, 낱개 가격 * M
public static void main(String[] args) throws IOException {
int minEachString = Integer.MAX_VALUE;
int minPackageString = Integer.MAX_VALUE;
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());
// 낱개 중 min
// 패키지 중 min
for (int i = 0; i < M; i++) {
st = new StringTokenizer(br.readLine());
minPackageString = Math.min(Integer.parseInt(st.nextToken()), minPackageString);
minEachString = Math.min(Integer.parseInt(st.nextToken()), minEachString);
}
// System.out.println("minEachString : " + minEachString);
// System.out.println("minPackageString : " + minPackageString);
// 남은 N%6 * minEachString 보다 package 가격이 더 싼 경우
int result;
if (N * minEachString < minPackageString) {
result = N * minEachString;
} else if ((N%6) * minEachString > minPackageString) {
result = minPackageString * (N/6 + 1);
} else {
result = minPackageString * (N/6) + minEachString * (N%6);
}
System.out.println(result);
}
}
다음의 코드 부분 조건 변경 이후 통과했지만 아직 그 이유를 찾지 못함… N이라고 해도 더 작은 케이스면 개별로 구매하는 것이 맞다고 생각하고 모든 에외 케이스들 다 찾아봐도 안되는 문제… 추후 더 반례 찾은 후 블로그 포스팅할 예정..
if (6 * minEachString < minPackageString) { // N -> 6
result = N * minEachString;
} else if ((N%6) * minEachString > minPackageString) {
result = minPackageString * (N/6 + 1);
} else {
result = minPackageString * (N/6) + minEachString * (N%6);
}