πŸ₯ˆ [Baekjoon / Java] 1932. μ •μˆ˜ μ‚Όκ°ν˜•

μ΄ν•˜μ–€Β·2024λ…„ 6μ›” 9일
0

🐣 λ°±μ€€

λͺ©λ‘ 보기
20/33

문제 μ„€λͺ…


πŸ’‘ Info

λ‚΄μš©


μœ„ 그림은 크기가 5인 μ •μˆ˜ μ‚Όκ°ν˜•μ˜ ν•œ λͺ¨μŠ΅μ΄λ‹€.

맨 μœ„μΈ΅ 7λΆ€ν„° μ‹œμž‘ν•΄μ„œ μ•„λž˜μ— μžˆλŠ” 수 쀑 ν•˜λ‚˜λ₯Ό μ„ νƒν•˜μ—¬ μ•„λž˜μΈ΅μœΌλ‘œ λ‚΄λ €μ˜¬ λ•Œ, μ΄μ œκΉŒμ§€ μ„ νƒλœ 수의 합이 μ΅œλŒ€κ°€ λ˜λŠ” 경둜λ₯Ό κ΅¬ν•˜λŠ” ν”„λ‘œκ·Έλž¨μ„ μž‘μ„±ν•˜λΌ. μ•„λž˜μΈ΅μ— μžˆλŠ” μˆ˜λŠ” ν˜„μž¬ μΈ΅μ—μ„œ μ„ νƒλœ 수의 λŒ€κ°μ„  μ™Όμͺ½ λ˜λŠ” λŒ€κ°μ„  였λ₯Έμͺ½μ— μžˆλŠ” 것 μ€‘μ—μ„œλ§Œ 선택할 수 μžˆλ‹€.

μ‚Όκ°ν˜•μ˜ ν¬κΈ°λŠ” 1 이상 500 μ΄ν•˜μ΄λ‹€. μ‚Όκ°ν˜•μ„ 이루고 μžˆλŠ” 각 μˆ˜λŠ” λͺ¨λ‘ μ •μˆ˜μ΄λ©°, λ²”μœ„λŠ” 0 이상 9999 μ΄ν•˜μ΄λ‹€.

πŸ“₯μž…λ ₯ 쑰건

  • 첫째 쀄에 μ‚Όκ°ν˜•μ˜ 크기 n(1 ≀ n ≀ 500)이 주어지고, λ‘˜μ§Έ 쀄뢀터 n+1번째 μ€„κΉŒμ§€ μ •μˆ˜ μ‚Όκ°ν˜•μ΄ 주어진닀.
    5
    7
    3 8
    8 1 0
    2 7 4 4
    4 5 2 6 5

πŸ“€μΆœλ ₯ 쑰건

  • 첫째 쀄에 합이 μ΅œλŒ€κ°€ λ˜λŠ” κ²½λ‘œμ— μžˆλŠ” 수의 합을 좜λ ₯ν•œλ‹€.
    30


문제 이해


  • λ‹€μ΄λ‚˜λ―Ή ν”„λ‘œκ·Έλž˜λ°μ„ μ΄μš©ν•΄ λ‚˜λˆ μ„œ ν•© 좜λ ₯ν•˜κΈ°!


μ•Œκ³ λ¦¬μ¦˜ 및 μ΅œμ’… 풀이


μ‹€μ œ 풀이 μ‹œκ°„ : 15λΆ„

  • μž…λ ₯
    • N μž…λ ₯λ°›κΈ°
    • 2차원 λ°°μ—΄ TD μž…λ ₯λ°›κΈ°
    • 2차원 λ°°μ—΄ arr μž…λ ₯λ°›κΈ°
  • 계산
    • D ν…Œμ΄λΈ” μ΄ˆκΈ°ν™”
    • λ‹€μ΄λ‚˜λ―Ή ν”„λ‘œκ·Έλž˜λ° μ‹€ν–‰: μ™Όμͺ½ μœ„μ™€ κ·Έλƒ₯ μœ„λ₯Ό λ‚˜λˆ μ„œ κ΅¬ν˜„
  • 좜λ ₯
    • κ²°κ³Ό result 좜λ ₯ν•˜κΈ°
import java.util.*;

public class Main {

  static int N;
  static int[][] TD;

  public static void main(String[] args) {
    Scanner sc = new Scanner(System.in);

    N = sc.nextInt();

    TD = new int[N][N];
    for (int i = 0; i < N; i++) {
      for (int j = 0; j < i + 1; j++) {
        TD[i][j] = sc.nextInt();
      }
    }

    for (int i = 1; i < N; i++) {
      for (int j = 0; j <= i; j++) {
        int LUp, Up;
        if (j == 0) {
          LUp = 0;
        } else {
          LUp = TD[i - 1][j - 1];
        }

        if (j == i) {
          Up = 0;
        } else {
          Up = TD[i - 1][j];
        }
        TD[i][j] = TD[i][j] + Math.max(LUp, Up);
      }
    }
    int result = 0;
    for (int i = 0; i < N; i++) {
      result = Math.max(result, TD[N - 1][i]);
    }
    System.out.println(result);
  }
}

profile
μ–Έμ  κ°€ λ‚΄ μ½”λ“œλ‘œ 세상에 κΈ°μ—¬ν•  수 μžˆλ„λ‘, BE&Data Science 개발 기둝 λ…ΈνŠΈβ˜˜οΈ

0개의 λŒ“κΈ€