λ°±μ€ 1106 νΈν [JAVA]
- -
πλ§ν¬
1106 νΈν Gold5
β οΈλ¬Έμ
μΈκ³μ μΈ νΈν μΈ νν νΈν μ μ¬μ₯μΈ κΉννμ μ΄λ²μ μμ μ μ‘°κΈ λ리기 μν΄μ ν보λ₯Ό νλ €κ³ νλ€.
ννμ΄κ° ν보λ₯Ό ν μ μλ λμκ° μ£Όμ΄μ§κ³ , κ° λμλ³λ‘ ν보νλλ° λλ λΉμ©κ³Ό, κ·Έ λ λͺ λͺ μ νΈν κ³ κ°μ΄ λμ΄λλμ§μ λν μ λ³΄κ° μλ€.
μλ₯Ό λ€μ΄, “μ΄λ€ λμμμ 9μμ λ€μ¬μ ν보νλ©΄ 3λͺ μ κ³ κ°μ΄ λμ΄λλ€.”μ κ°μ μ 보μ΄λ€. μ΄λ, μ΄λ¬ν μ 보μ λνλ λμ μ μλ°° λ§νΌμ ν¬μν μ μλ€. μ¦, 9μμ λ€μ¬μ 3λͺ μ κ³ κ°, 18μμ λ€μ¬μ 6λͺ μ κ³ κ°, 27μμ λ€μ¬μ 9λͺ μ κ³ κ°μ λμ΄λκ² ν μ μμ§λ§, 3μμ λ€μ¬μ ν보ν΄μ 1λͺ μ κ³ κ°, 12μμ λ€μ¬μ 4λͺ μ κ³ κ°μ λμ΄λκ² ν μλ μλ€.
κ° λμμλ 무ν λͺ μ μ μ¬μ μΈ κ³ κ°μ΄ μλ€. μ΄λ, νΈν μ κ³ κ°μ μ μ΄λ Cλͺ λμ΄κΈ° μν΄ ννμ΄κ° ν¬μν΄μΌ νλ λμ μ΅μκ°μ ꡬνλ νλ‘κ·Έλ¨μ μμ±νμμ€.
μ λ ₯
첫째 μ€μ Cμ ννμ΄κ° ν보ν μ μλ λμμ κ°μ Nμ΄ μ£Όμ΄μ§λ€. Cλ 1,000λ³΄λ€ μκ±°λ κ°μ μμ°μμ΄κ³ , Nμ 20λ³΄λ€ μκ±°λ κ°μ μμ°μμ΄λ€. λμ§Έ μ€λΆν° Nκ°μ μ€μλ κ° λμμμ ν보ν λ λλ λΉμ©κ³Ό κ·Έ λΉμ©μΌλ‘ μ»μ μ μλ κ³ κ°μ μκ° μ£Όμ΄μ§λ€. μ΄ κ°μ 100λ³΄λ€ μκ±°λ κ°μ μμ°μμ΄λ€.
μΆλ ₯
첫째 μ€μ λ¬Έμ μ μ λ΅μ μΆλ ₯νλ€.
πλΆμ
ν¬μνλ λμ μ΅μκ°μ ꡬνλ λ¬Έμ μΈλ°, dpλ‘ μ κ·Όν΄ λ³΄μλ€. 1λͺ μΌ λ, κ°μ₯ μμ λμ΄ λλ κ²½μ°, 2μμΌ λ, (1λͺ μΌ λ + 1μμ§λ¦¬ κ°μ₯ μμ λμ΄ λλ κ²½μ°) μ (2λͺ μ΄μμΈ κ²½μ° μ€ κ°μ₯ μμ λμ΄ λλ κ²½μ°), 3μμΌ λ, 4μμΌ λ... κ³μ λ°λ³΅νμ¬ μ κ·Όμν¬ μ μμλ€. 100μμΌλ 10λͺ 4λͺ 2λͺ μμΌλ©΄ (90λͺ μΌλ μ΅μ + 10λͺ ), (96λͺ μΌλ μ΅μ + 4λͺ ), (98λͺ μΌλ μ΅μ + 2λͺ ) μ€ κ°μ₯ μμ κ°μ κ³ λ₯΄λ©΄ μ΅μκ°μ΄ λ κ²μ΄λ€. μ΄μ κ°μ κ·μΉμΌλ‘ μ§νν΄λ΄€λ€
1. λ³μ μ μΈμ μλ μ½λμ κ°μ΄ νμλ€. costμ pesonμ κ°μ§ κ°μ²΄λ₯Ό μμ±νκ³ ν΄λΉ κ°μ²΄λ₯Ό 리μ€νΈλ‘κ°μ§ λμ λ°°μ΄μ μ μΈνλ€.
static BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
static StringTokenizer st;
static MarketingCost[] city;
static int result = 987654321;
static int[] array;
static int N, C;
class MarketingCost {
int cost;
int person;
public MarketingCost(int cost, int person) {
this.cost = cost;
this.person = person;
}
}
2.dpκ°μ μ μ₯νλ arrayκ°μ μ΅λκ°μ΄ λλ κ°μΌλ‘ μ€μ μ ν΄μ£Όκ³ 0μΈλ±μ€λ₯Ό 0μΌλ‘ μ€μ ν΄μ£Όμλ€. κ³μ°νλ€ μΈλ±μ€κ° -κ° λ κ²½μ° μΈλ±μ€λ₯Ό 0μΌλ‘ λ°κΏμ£Όκ³ 0μ λ°ννκΈ° μν¨μ΄μλ€.(λ§μ½ -1λͺ μ΄λ -2λͺ μ΄λ λλ λΉμ©μ 0μ΄λκΉ) μ΄ν κ°λ€μ μ μ₯ν΄μ€λ€.
city = new MarketingCost[C];
array = new int[1101];
Arrays.fill(array, 987654321);
array[0] = 0;
for (int i = 0; i < C; i++) {
st = new StringTokenizer(br.readLine());
city[i] = new MarketingCost(Integer.parseInt(st.nextToken()), Integer.parseInt(st.nextToken()));
}
3.μ΄ν μ²μμ μ€λͺ νλλλ‘ μ²μ²ν μ 체 κ²½μ°μ μλ₯Ό λ°μ Έκ°λ©°, λ°°μ΄μ μ±μ΄λ€.
for (int i = 1; i <= N; i++) {
for (MarketingCost m : city) {
int index = 0;
if (i - m.person < 0){
index = 0;
}else{
index = i - m.person;
}
array[i] = Math.min(array[index] + m.cost, array[i]);
}
}
for (int i = N; i <= N; i++) {
result = Math.min(result, array[i]);
}
βμ 체 μ½λ
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.StringTokenizer;
public class Main {
static BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
static StringTokenizer st;
static MarketingCost[] city;
static int result = 987654321;
static int[] array;
static int N, C;
public static void main(String[] args) throws IOException {
br = new BufferedReader(new InputStreamReader(System.in));
st = new StringTokenizer(br.readLine());
N = Integer.parseInt(st.nextToken());
C = Integer.parseInt(st.nextToken());
city = new MarketingCost[C];
array = new int[1101];
Arrays.fill(array, 987654321);
array[0] = 0;
for (int i = 0; i < C; i++) {
st = new StringTokenizer(br.readLine());
city[i] = new MarketingCost(Integer.parseInt(st.nextToken()), Integer.parseInt(st.nextToken()));
}
for (int i = 1; i <= N; i++) {
for (MarketingCost m : city) {
int index = 0;
if (i - m.person < 0){
index = 0;
}else{
index = i - m.person;
}
array[i] = Math.min(array[index] + m.cost, array[i]);
}
}
for (int i = N; i <= N; i++) {
result = Math.min(result, array[i]);
}
System.out.println(result);
}
}
class MarketingCost {
int cost;
int person;
public MarketingCost(int cost, int person) {
this.cost = cost;
this.person = person;
}
}
πκ²°κ³Ό
κ°λ¨ν dpλ¬Έμ μ¬μ μ½κ² μ§ννλ κ² κ°λ€.

'Algorithm' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
λ°±μ€ 2668 μ«μκ³ λ₯΄κΈ°[JAVA] (0) | 2023.09.26 |
---|---|
λ°±μ€ 1765 λμΈμ ν μ νκΈ°[JAVA] (0) | 2023.08.02 |
λ°±μ€ 1068 νΈλ¦¬[JAVA] (0) | 2023.07.30 |
λ°±μ€ 18430 무기곡ν[JAVA] (0) | 2023.07.29 |
μμ€ν κ³΅κ° κ°μ¬ν©λλ€