CodingTest/Java

BOJ_14501 : 퇴사

Soom_1n 2022. 12. 17. 09:38

πŸ‘‰ 문제링크

 

14501번: 퇴사

첫째 쀄에 백쀀이가 얻을 수 μžˆλŠ” μ΅œλŒ€ 이읡을 좜λ ₯ν•œλ‹€.

www.acmicpc.net



πŸ”Έ 문제 뢄석 πŸ”Έ

  • NμΌλ™μ•ˆ 업무λ₯Ό μˆ˜ν–‰ν•œλ‹€.
    • N개의 μ—…λ¬΄μ˜ μ²˜λ¦¬μ— ν•„μš”ν•œ μ‹œκ°„ t와 λ°›λŠ” κΈˆμ•‘ pκ°€ μžˆλ‹€.
    • μ²˜λ¦¬μ— ν•„μš”ν•œ μ‹œκ°„μ΄ N일을 λ„˜μœΌλ©΄ 처리 λΆˆκ°€λŠ₯ν•˜λ‹€.
    • 받을 수 μžˆλŠ” κΈˆμ•‘μ˜ μ΅œλŒ€κ°’μ„ 좜λ ₯ν•œλ‹€.
  • μž¬κ·€ λ©”μ†Œλ“œλ‘œ 브루트 포슀 λ°©μ‹μœΌλ‘œ 풀이할 수 μžˆλ‹€.
  • λ‹€μ΄λ‚˜λ―Ή ν”„λ‘œκ·Έλž˜λ° λ°©μ‹μœΌλ‘œ 풀이할 수 μžˆλ‹€.

πŸ”Έ μ½”λ“œ πŸ”Έ

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        int[] t = new int[n];
        int[] p = new int[n];

        for (int i = 0; i < n; i++) {
            t[i] = sc.nextInt();
            p[i] = sc.nextInt();
        }

        int[] dp = new int[n + 1];

        for (int i = 0; i < n; i++) {
            if (i + t[i] <= n) {
                dp[i + t[i]] = Math.max(dp[i + t[i]], dp[i] + p[i]);
            }
            dp[i + 1] = Math.max(dp[i + 1], dp[i]);
        }
        System.out.println(dp[n]);
    }
}

πŸ”Έ μ½”λ“œ 해석 πŸ”Έ

  • dpλ°©μ‹μœΌλ‘œ ν’€μ΄ν–ˆλ‹€. intν˜• λ°°μ—΄ dpλŠ” (인덱슀)일에 받을 수 μžˆλŠ” μ΅œλŒ€ κΈˆμ•‘μ„ μ €μž₯ν•œλ‹€.
    • ν˜„μž¬ 일(i) + 업무 μ²˜λ¦¬μ— ν•„μš”ν•œ κΈ°κ°„( t[ i ] )이 nμ΄ν•˜μ—¬μ•Ό 처리 κ°€λŠ₯ν•œ 업무이닀.
      • κΈ°μ‘΄ κ°’ dp[ i + t[ i ] ]와 ν•΄λ‹Ή 업무λ₯Ό μ²˜λ¦¬ν–ˆμ„ λ•Œ μ–»λŠ” κΈˆμ•‘ dp[ i ] + p[ i ] 쀑 큰 값을 μ €μž₯ν•œλ‹€.
    • ν˜„μž¬ 일에 업무λ₯Ό μ²˜λ¦¬ν•˜μ§€ μ•ŠλŠ” κ²½μš°λ„ μžˆλ‹€.
      • λ‹€μŒ 일dp[ i + 1 ]에 ν˜„μž¬ 일dp[ i ]와 λΉ„κ΅ν•΄μ„œ 큰 값을 μ €μž₯ν•œλ‹€.

πŸ”Έ end πŸ”Έ

  • λ‹¨μˆœ for문으둜 κ΅¬ν˜„ν–ˆμ„λ•Œ 예제 4λ²ˆμ„ ν†΅κ³Όν•˜μ§€ λͺ»ν–ˆλ‹€.
    • ν˜„μž¬ 일에 업무λ₯Ό μ²˜λ¦¬ν•˜μ§€ μ•ŠλŠ” 경우λ₯Ό 빠뜨렸기 λ•Œλ¬Έμ΄λ‹€.
  • dp둜 κ΅¬ν˜„ν•˜λ‹ˆ 생각보닀 λ¬Έμ œκ°€ κ°„λ‹¨ν•΄μ‘Œλ‹€.
    • 예제 4λ²ˆμ„ ν†΅κ³Όν•˜μ§€ λͺ»ν•˜κ³  문제의 μ•Œκ³ λ¦¬μ¦˜ λΆ„λ₯˜λ₯Ό λ΄€μ„λ•Œ, dp와 Brute Forceκ°€ 있길래 μž¬κ·€μ™€ dp배열이라 μƒκ°ν–ˆλŠ”λ° λ°°μ—΄ κ·œμΉ™μ΄ μ–΄λ €μšΈ 것이라 κ²λ¨Ήμ—ˆλ˜ 것 κ°™λ‹€.
  • μ‚Όμ„± SW μ—­λŸ‰ ν…ŒμŠ€νŠΈ 기좜 문제의 μ΅œμ € λ‚œμ΄λ„ λ¬Έμ œμ΄λ‹€.

728x90