https://www.acmicpc.net/problem/1049
1049번: 기타줄
첫째 줄에 N과 M이 주어진다. N은 100보다 작거나 같은 자연수이고, M은 50보다 작거나 같은 자연수이다. 둘째 줄부터 M개의 줄에는 각 브랜드의 패키지 가격과 낱개의 가격이 공백으로 구분하여 주
www.acmicpc.net
기타줄이라는 문제 Java로 풀이하겠습니다.

이 문제는 N개 이상의 기타 줄을 최소 비용으로 구입하는 방법을 찾는 문제입니다.
가장 적은 비용으로 구매하는 방법은 다음과 같습니다.
- 패키지로 구입하는 것이 낱개로 구입하는 것보다 이득이면 패키지로만 구입합니다.
- 낱개로 구입하는 것이 패키지로 구입하는 것보다 이득이면 낱개로만 구입합니다.
- 패키지와 낱개를 조합하여 구입하는 것이 이득이면 패키지와 낱개를 적절히 조합하여 구입합니다.
다음과 같이 풀이하였습니다.
import java.util.Arrays;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int N = scanner.nextInt();
int M = scanner.nextInt();
int[] packagePrices = new int[M];
int[] singlePrices = new int[M];
for (int i = 0; i < M; i++) {
packagePrices[i] = scanner.nextInt(); // 패키지 가격
singlePrices[i] = scanner.nextInt(); // 낱개 가격
}
int minPackagePrice = Arrays.stream(packagePrices).min().getAsInt();
int minSinglePrice = Arrays.stream(singlePrices).min().getAsInt();
int result = 0;
if (minPackagePrice <= minSinglePrice * 6) {
// 패키지로만 구입하는 것이 이득일 경우
result += (N / 6) * minPackagePrice;
if (N % 6 * minSinglePrice > minPackagePrice) {
result += minPackagePrice;
} else {
result += N % 6 * minSinglePrice;
}
} else {
// 낱개로만 구입하는 것이 이득일 경우
result += N * minSinglePrice;
}
System.out.println(result);
scanner.close();
}
}
1. N에 기타 줄 개수를 M에 브랜드의 개수를 입력받도록 선언합니다.
2. 각각 배열에 브랜드의 패키지와 낱개 가격을 입력받습니다.
3. 패키지의 최소 가격과 낱개의 최소 가격을 계산합니다.
4. 패키지로 구입하는 것이 낱개로 구입하는 경우보다 이득일 경우
N을 6으로 나눈 몫에 패키지 가격을 곱하여 패키지를 구입할 때의 총비용을 result에 더합니다.
만약에 나머지 부분의 낱개 가격이 패키지 가격보다 크다면, 패키지로 구입하는 것이 이득이므로 result에 패키지 가격을 더합니다.
그렇지 않으면 나머지 부분의 낱개 가격을 result에 더합니다.
5. 낱개로만 구입하는 것이 이득일 경우 N과 낱개 가격을 곱하여 총비용을 result에 더합니다.
6. 마지막으로 최종 result를 출력합니다.
이 코드는 주어진 브랜드 별 패키지와 낱개의 가격을 기준으로 가장 저렴한 방법으로 기타 줄을 구입하는 비용을 계산합니다.
이견이 있으시다면 자유롭게 댓글 남겨주세요.

'Algorithm > CodingTest' 카테고리의 다른 글
| [Programmers] PCCE 기출문제 9번 / 이웃한 칸 (1) | 2024.01.02 |
|---|---|
| [Baekjoon] 1173번 운동 (Java) (2) | 2023.11.12 |
| [Baekjoon] 1021번 회전하는 큐 (Java) (0) | 2023.11.01 |
| [Baekjoon] 1026번 보물 (Java) (2) | 2023.10.28 |
| [Programmers] Level.1 체육복 (Java) (1) | 2023.10.28 |