-
[BOJ] 14501 ν΄μ¬_JAVASTUDY π/μκ³ λ¦¬μ¦ 2021. 2. 3. 20:53λ°μν
[λ¬Έμ ]
14501λ²: ν΄μ¬
첫째 μ€μ λ°±μ€μ΄κ° μ»μ μ μλ μ΅λ μ΄μ΅μ μΆλ ₯νλ€.
www.acmicpc.net
μλ΄μμΌλ‘ μΌνκ³ μλ λ°±μ€μ΄λ ν΄μ¬λ₯Ό νλ €κ³ νλ€.
μ€λλΆν° N+1μΌμ§Έ λλ λ ν΄μ¬λ₯Ό νκΈ° μν΄μ, λ¨μ NμΌ λμ μ΅λν λ§μ μλ΄μ νλ €κ³ νλ€.
λ°±μ€μ΄λ λΉμμκ² μ΅λν λ§μ μλ΄μ μ‘μΌλΌκ³ λΆνμ νκ³ , λΉμλ ν루μ νλμ© μλ‘ λ€λ₯Έ μ¬λμ μλ΄μ μ‘μλμλ€.
κ°κ°μ μλ΄μ μλ΄μ μλ£νλλ° κ±Έλ¦¬λ κΈ°κ° Tiμ μλ΄μ νμ λ λ°μ μ μλ κΈμ‘ Piλ‘ μ΄λ£¨μ΄μ Έ μλ€.
N = 7μΈ κ²½μ°μ λ€μκ³Ό κ°μ μλ΄ μΌμ νλ₯Ό 보μ.1μΌμ μ‘νμλ μλ΄μ μ΄ 3μΌμ΄ 걸리며, μλ΄νμ λ λ°μ μ μλ κΈμ‘μ 10μ΄λ€. 5μΌμ μ‘νμλ μλ΄μ μ΄ 2μΌμ΄ 걸리며, λ°μ μ μλ κΈμ‘μ 15μ΄λ€.
μλ΄μ νλλ° νμν κΈ°κ°μ 1μΌλ³΄λ€ ν΄ μ μκΈ° λλ¬Έμ, λͺ¨λ μλ΄μ ν μλ μλ€. μλ₯Ό λ€μ΄μ 1μΌμ μλ΄μ νκ² λλ©΄, 2μΌ, 3μΌμ μλ μλ΄μ ν μ μκ² λλ€.
2μΌμ μλ μλ΄μ νκ² λλ©΄, 3, 4, 5, 6μΌμ μ‘νμλ μλ΄μ ν μ μλ€.λν, N+1μΌμ§Έμλ νμ¬μ μκΈ° λλ¬Έμ, 6, 7μΌμ μλ μλ΄μ ν μ μλ€.
ν΄μ¬ μ μ ν μ μλ μλ΄μ μ΅λ μ΄μ΅μ 1μΌ, 4μΌ, 5μΌμ μλ μλ΄μ νλ κ²μ΄λ©°, μ΄λμ μ΄μ΅μ 10+20+15=45μ΄λ€.μλ΄μ μ μ ν νμ λ, λ°±μ€μ΄κ° μ»μ μ μλ μ΅λ μμ΅μ ꡬνλ νλ‘κ·Έλ¨μ μμ±νμμ€.
[μ λ ₯]
첫째 μ€μ N (1 ≤ N ≤ 15)μ΄ μ£Όμ΄μ§λ€.
λμ§Έ μ€λΆν° Nκ°μ μ€μ Tiμ Piκ° κ³΅λ°±μΌλ‘ ꡬλΆλμ΄μ μ£Όμ΄μ§λ©°, 1μΌλΆν° NμΌκΉμ§ μμλλ‘ μ£Όμ΄μ§λ€. (1 ≤ Ti ≤ 5, 1 ≤ Pi ≤ 1,000)
[μΆλ ₯]
첫째 μ€μ λ°±μ€μ΄κ° μ»μ μ μλ μ΅λ μ΄μ΅μ μΆλ ₯νλ€.
[Solution 1]
- μμ νμ
- μ μ΄μ μ λ ₯μ‘°κ±΄μ΄ ν¬μ§μκ³ Tκ°μΌλ‘ μ νμ ννκΈ° λλ¬Έμ μμ νμμΌλ‘λ ν΄κ²° κ°λ₯ν λ¬Έμ package boj14501_ν΄μ¬; /* μμ νμ * (DPλ¬Έμ μ§λ§ ν΅κ³Όλ¨..!) * */ import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.StringTokenizer; public class Main { static int n, max=0; static int[][] arr; public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); StringTokenizer st = new StringTokenizer(br.readLine()); n = Integer.parseInt(st.nextToken()); arr = new int[n][2]; for(int i=0; i<n; i++) { st = new StringTokenizer(br.readLine()); arr[i][0] = Integer.parseInt(st.nextToken()); arr[i][1] = Integer.parseInt(st.nextToken()); } sol(0, 0); System.out.println(max); } static void sol(int idx, int money) { if(idx >= n) { max = Math.max(max, money); return ; } //nμ΄νμλ νμ¬μ μκΈ°λλ¬Έμ idx+걸리λ μΌμκ° nμ λμΌλ©΄ μλ¨ if(idx+arr[idx][0] <= n) { sol(idx+arr[idx][0], money+arr[idx][1]); } sol(idx+1, money); } }
[Solution 2]
- λ€μ΄λλ―Ή νλ‘κ·Έλλ°package boj14501_ν΄μ¬; /* λ€μ΄λλ―Ή νλ‘κ·Έλλ°μΌλ‘ νκΈ° * */ import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.StringTokenizer; public class Main2 { static int n, max=0; static int[][] arr; static int[] d; public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); StringTokenizer st = new StringTokenizer(br.readLine()); n = Integer.parseInt(st.nextToken()); arr = new int[n][2]; d = new int[n+1]; for(int i=0; i<n; ++i) { st = new StringTokenizer(br.readLine()); arr[i][0] = Integer.parseInt(st.nextToken()); arr[i][1] = Integer.parseInt(st.nextToken()); } for(int i=n-1; i>=0; --i) { //μΈλ±μ€μμ 걸리λμκ°μ΄ nλ³΄λ€ μμμΌλ§ + if(i+arr[i][0] <= n) { d[i] = Math.max(arr[i][1]+d[i+arr[i][0]], max); max = d[i]; } else { d[i] = max; } } System.out.println(d[0]); } }
λ°μν'STUDY π > μκ³ λ¦¬μ¦' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[2021 μΉ΄μΉ΄μ€ λΈλΌμΈλ μ½λ©ν μ€νΈ] ν©μΉ νμ μκΈ JAVA (0) 2021.02.04 [SWEA] 2115 λ²κΏμ±μ·¨_JAVA (0) 2021.02.03 [BOJ] 2110 곡μ κΈ° μ€μΉ_JAVA (0) 2021.02.03 [BOJ] 1371 κ°μ₯ λ§μ κΈμ_JAVA (0) 2020.06.14 [BOJ] 1764 λ£λ³΄μ‘_JAVA (0) 2020.06.11