SOL 1) 브루트 포스+가지치기
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;
import java.util.StringTokenizer;
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 minPackage = 1001, minSingle = 1001;
for(int i = 0; i < M; i++) {
st = new StringTokenizer(br.readLine());
int packagePrice = Integer.parseInt(st.nextToken()); // 패키지 가격
int singlePrice = Integer.parseInt(st.nextToken()); // 낱개 가격
minPackage = Math.min(minPackage, packagePrice);
minSingle = Math.min(minSingle, singlePrice);
}
int result = Math.min((N / 6) * minPackage + (N % 6) * minSingle, ((N / 6) + 1) * minPackage);
System.out.print(result);
}
}
SOL 2) 그리디
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;
import java.util.StringTokenizer;
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 minPackage = 1001, minSingle = 1001;
for (int i = 0; i < M; i++) {
st = new StringTokenizer(br.readLine());
int packagePrice = Integer.parseInt(st.nextToken()); // 패키지 가격
int singlePrice = Integer.parseInt(st.nextToken()); // 낱개 가격
minPackage = Math.min(minPackage, packagePrice);
minSingle = Math.min(minSingle, singlePrice);
}
int result = Math.min(((N + 5) / 6) * minPackage, N * minSingle);
System.out.print(result);
}
}