티스토리 뷰
1. 문제
https://www.acmicpc.net/problem/1049
2. 설명
묶음으로 구매할 때와 낱개로 구매할 때의 경우를 따로 집합에 삽입해 오름차순으로 정렬했다.
그리고 묶음으로 구매할 때 vs 낱개로 6개를 구매할 때를 비교해서 작은 값을 구했다. (minBundle)
정답의 경우 예를 들어, 14개를 구매할 경우, 3묶음(18)으로 구매할 경우와 2묶음(12) + 2개로 구매할 경우를 비교해 최솟값을 출력하도록 했다.
3. 코드
import java.util.Arrays;
import java.util.StringTokenizer;
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));
StringTokenizer st = new StringTokenizer(br.readLine());
int N = Integer.parseInt(st.nextToken());
int M = Integer.parseInt(st.nextToken());
int[] bundle = new int[M];
int[] single = new int[M];
for(int i=0; i<M; i++) {
st = new StringTokenizer(br.readLine());
bundle[i] = Integer.parseInt(st.nextToken());
single[i] = Integer.parseInt(st.nextToken());
}
Arrays.sort(bundle);
Arrays.sort(single);
int minBundle = bundle[0];
for(int s : single) {
if(minBundle > (s*6))
minBundle = s*6;
}
int pack = (N/6 + 1) * minBundle;
int sing = (N/6) * minBundle + (N%6) * single[0];
System.out.println(pack<sing ? pack : sing);
}
}
'알고리즘 풀이 > 백준' 카테고리의 다른 글
백준 1152 단어의 개수 JAVA (0) | 2020.08.02 |
---|---|
백준 1157 단어 공부 JAVA (0) | 2020.07.31 |
백준 2217 로프 JAVA (0) | 2020.07.29 |
백준 9461 파도반 수열 JAVA (DP) (0) | 2020.07.20 |
백준 11727 2xn 타일링 2 JAVA (DP) (0) | 2020.07.18 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday