π λ¬Έμ
https://www.acmicpc.net/problem/2240
2240λ²: μλλ무
μλλ μλλ₯Ό μ’μνλ€. κ·Έλμ μ§μ μλλ무λ₯Ό μ¬μ΄λκ³ , μ¬κΈ°μ μ΄λ¦¬λ μλλ₯Ό λ¨Ήκ³ λ νλ€. νμ§λ§ μλλ ν€κ° μμμ μλλ₯Ό λ°λ¨Ήμ§λ λͺ»νκ³ , μλκ° λ¨μ΄μ§ λκΉμ§ κΈ°λ€λ¦° λ€μμ λ¨μ΄
www.acmicpc.net
π μμ΄λμ΄
μ§μ λ μμ§μ μμμ μ΅λ λͺ κ°μ μ¬κ³Όλ₯Ό λ¨Ήμ μ μλκ°μ λν λ¬Έμ μ΄λ€.
0λ² μμ§μ΄λ©΄ 1λ²μΉΈ,
1λ² μμ§μ΄λ©΄ 2λ²μΉΈ,
2λ² μμ§μ΄λ©΄ 1λ²μΉΈ,
μ¦ μΉΈμ μμ§μμ λ°λΌ κ·Έ μ¬λμ΄ μλ μμΉκ° μ ν΄μ§λ€.
λ°λΌμ μ΄κ²μ μ΄μ©νμ¬ νμ΄νμλ€.
1-1) λ¨Όμ 0λ² μμ§μΈ κ²½μ°: μμΈ μ²λ¦¬λ₯Ό μ μ©ν΄μ μ΄μ μΉΈμ κ°μ λ°μμ€κ³
1-2) j λ² μμ§μΈ κ²½μ°: jλ²μμ§μΈ κ²½μ° iλ²μ§Έ μ¬κ³Όλ₯Ό λ°κΈ° μ§μ κ³Ό, j-1λ² μμ§μΈ κ²½μ° iλ²μ§Έ μ¬κ³Όλ₯Ό λ°μ κ²½μ°μ maxλ₯Ό λ£λλ€.
2) κ·Έλ¦¬κ³ νμ¬ μλ μΉΈμ΄ μ¬κ³Όκ° λ¨μ΄μ§ μμΉλΌλ©΄ +1μ νλ€.
λ°λΌμ score[i][j]μλ iλ²μ§Έ μ¬κ³Όκ° λ¨μ΄μ§λ μ΅λλ‘ μ¬κ³Όλ₯Ό λ°μ μ μλ κ²½μ°μ΄λ€.(κΌ jλ² μμ§μ¬μΌ νλκ²μ μλλ€, j-1λ² μμ§μΈ κ²½μ°μλ μ΅λκ°μ΄ λ μ μλ€. 1λ² κ³Όμ μμ maxλ₯Ό κ°±μ νλ©΄μ μ΄λν΄μ)
μ μ½λμμ 1-2μμ λ€ μ μλ μκ° λ§μ½ j-1μμ§μΈ μνμμ iλ²μ§Έ μ¬κ³Όλ₯Ό λ°μλ€λ©΄ 2λ²μ μν΄μ μ€λ³΅μΌλ‘ μ¬κ³Όλ₯Ό λ°μ μ μλκ±° μλκ° νλ μλ¬Έμ΄ λ€ μ μλ€.
μμ§μΈ μΉΈμ΄ νμΉΈ μ°¨μ΄ μ΄λ―λ‘ μ¬κ³Όλ λμ€μ νλ²λ§ λ°μ μ μλ€. max κ°±μ μ μν΄μ ν΄λΉ κ°κ³Ό ν¨κ» λΉκ΅νμλ€.
κ°±μ νλ λ°©λ²μ μ¬μ©νμ§ μλ κ²½μ° μλμ κ°μ μ½λλ ν΅κ³Ό κ°λ₯νλ€.

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
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;
st = new StringTokenizer(br.readLine());
int T = Integer.parseInt(st.nextToken());
int W = Integer.parseInt(st.nextToken());
int[][] score = new int[T + 1][W + 1];
for (int i = 1; i <= T; i++) {
int now = Integer.parseInt(br.readLine()) - 1;
for (int j = 0; j <= W; j++) {
if (j == 0) score[i][j] = score[i - 1][j];
else score[i][j] = Math.max(score[i - 1][j], score[i - 1][j - 1]);
if (now == j % 2) score[i][j]++;
}
}
int max = 0;
for (int temp : score[T]) {
max = Math.max(temp, max);
}
System.out.println(max);
}
}
7 2
2[0, 1, 1]
1[1, 1, 2]
1[2, 2, 3]
2[2, 3, 3]
2[2, 4, 4]
1[3, 4, 5]
1[4, 4, 6]
6
π νμ΄

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
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;
st = new StringTokenizer(br.readLine());
int T = Integer.parseInt(st.nextToken());//μ
λ ₯
int W = Integer.parseInt(st.nextToken());//μμ§μ
int[][] score = new int[T + 1][W + 1];
for (int i = 1; i <= T; i++) {
int now = Integer.parseInt(br.readLine()) - 1;
for (int j = 0; j <= W; j++) { //μμ§μ
if (j == 0) score[i][j] = score[i - 1][j];
else score[i][j] = Math.max(score[i - 1][j], score[i][j - 1]);
if (now == j % 2) score[i][j]++;
}
}
System.out.println(score[T][W]);
}
}
π μ€κ°κ³Όμ μ νμΈνκ³ μΆμ κ²½μ°
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
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;
StringBuilder sb = new StringBuilder();
st = new StringTokenizer(br.readLine());
int T = Integer.parseInt(st.nextToken());
int W = Integer.parseInt(st.nextToken());
int[][] score = new int[T + 1][W + 1];
for (int i = 1; i <= T; i++) {
int now = Integer.parseInt(br.readLine()) - 1;
for (int j = 0; j <= W; j++) {
if (j == 0) score[i][j] = score[i - 1][j];
else score[i][j] = Math.max(score[i - 1][j], score[i][j - 1]);
if (now == j % 2) score[i][j]++;
}
sb.append(Arrays.toString(score[i])).append("\n");
}
System.out.println(sb);
System.out.println(score[T][W]);
}
}
'λ°±μ€(boj)' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
| [JAVA]1958 LCS3(dp, 골λ3) (0) | 2023.06.08 |
|---|---|
| [JAVA]4803 νΈλ¦¬, λΆλ¦¬ μ§ν© (0) | 2023.06.03 |
| [JAVA]2847 κ²μμ λ§λ λμ€μ΄, 그리λ, μ€λ²4 (0) | 2023.06.01 |
| [JAVA]1063 νΉ, ꡬν, μ€λ²3 (0) | 2023.05.31 |
| [JAVA]17143 λμμ (1) | 2023.05.29 |