728x90
반응형
2024.07.01기준 - 실버4
백준, BEAKJOON, BOJ, JAVA, 자바
풀이
이 문제는 최소한의 비용을 지출하여 끊어진 기타줄을 교체하는 문제입니다.
1. 패키지와 낱개의 가격 중 가장 낮은 값을 저장합니다. (어떤 줄을 사든 상관이 없기 때문입니다.)
int minPack = Integer.MAX_VALUE; // 패키지 중 가장 낮은 가격
int minPiece = Integer.MAX_VALUE; // 낱개 중 가장 낮은 가겨
// 패키지와 낱개의 가격 중 가장 낮은 값을 구한다.
while (m-- > 0) {
st = new StringTokenizer(br.readLine());
int pack = Integer.parseInt(st.nextToken()); // 패키지의 가격
int piece = Integer.parseInt(st.nextToken()); // 낱개의 가격
minPack = Math.min(minPack, pack);
minPiece = Math.min(minPiece, piece);
}
2. 6개 이상이라면 6개 미만이 될때까지 패키지의 가격과 낱개의 가격 중 더 싼 가격을 선택합니다.
3. 6개 미만의 줄이 남았다면 그 수에 맞게 패키지의 1개의 가격과 나머지 낱개의 가격 중 더 싼값을 더해 줍니다.
if (minPiece * 6 > minPack) {
price = (n / 6) * minPack;
n %= 6;
// 교체할 줄이 6개 미만일때 패키지 가격과 낱개의 가격 중 싼 값을 더한다.
if (minPiece * n > minPack) {
price += minPack;
} else {
price += (minPiece * n);
}
} else { // 패키지 가격보다 낱개가 더 싸다면
price = minPiece * n;
}
코드
package Main;
import java.io.*;
import java.util.*;
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 minPack = Integer.MAX_VALUE; // 패키지 중 가장 낮은 가격
int minPiece = Integer.MAX_VALUE; // 낱개 중 가장 낮은 가겨
// 패키지와 낱개의 가격 중 가장 낮은 값을 구한다.
while (m-- > 0) {
st = new StringTokenizer(br.readLine());
int pack = Integer.parseInt(st.nextToken()); // 패키지의 가격
int piece = Integer.parseInt(st.nextToken()); // 낱개의 가격
minPack = Math.min(minPack, pack);
minPiece = Math.min(minPiece, piece);
}
int price = 0;
// 6개 기준 패키지가격 보다 낱개의 가격이 비싸다면
if (minPiece * 6 > minPack) {
price = (n / 6) * minPack;
n %= 6;
// 교체할 줄이 6개 미만일때 패키지 가격과 낱개의 가격 중 싼 값을 더한다.
if (minPiece * n > minPack) {
price += minPack;
} else {
price += (minPiece * n);
}
} else { // 패키지 가격보다 낱개가 더 싸다면
price = minPiece * n;
}
bw.write(Integer.toString(price));
bw.flush();
bw.close();
br.close();
}
}
728x90
반응형
'코딩테스트 일기 (BAEKJOON)' 카테고리의 다른 글
BAEKJOON / 백준 - JAVA 1015번 수열 정렬 (0) | 2024.07.03 |
---|---|
BAEKJOON / 백준 - JAVA 1002번 터렛 (0) | 2024.07.02 |
BAEKJOON / 백준 - JAVA 15966번 군계일학 (0) | 2024.06.30 |
BAEKJOON / 백준 - JAVA 29197번 아침 태권도 (0) | 2024.06.29 |
BAEKJOON / 백준 - JAVA 27466번 그래서 대회 이름 뭐로 하죠 (0) | 2024.06.28 |