์šฐ๊ทœ์ด์ธ์šฐ์œค
Eager To Learn ๐ŸŒŒ
์šฐ๊ทœ์ด์ธ์šฐ์œค
์ „์ฒด ๋ฐฉ๋ฌธ์ž
์˜ค๋Š˜
์–ด์ œ

๋ธ”๋กœ๊ทธ ๋ฉ”๋‰ด

  • ๐Ÿก ํ™ˆ
  • ๐Ÿš€ ๊นƒํ—ˆ๋ธŒ
  • โ›… ํƒœ๊ทธ ํด๋ผ์šฐ๋“œ
  • ๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ (217)
    • ๐Ÿ‘จ๐Ÿป‍๐Ÿ’ป PS (170)
      • JAVA (82)
      • MYSQL (1)
      • Docker (2)
      • PYTHON (24)
      • LeetCode 150 (39)
      • Algorithm ๊ธฐ๋ฒ• (1)
      • ๋ฐ”ํ‚น๋… (21)
    • ๋ธ”๋กœ๊ทธ ์ด์‚ฌ (0)
    • Error (1)
    • CS (15)
      • DataBase (2)
      • OS (7)
      • Network (1)
      • Spring (1)
      • ์ž๋ฃŒ๊ตฌ์กฐ (3)
      • Java (1)
    • Learned (7)
      • Spring (7)
    • ๊ฐœ๋ฐœ์„œ์  (15)
      • ๊ฐ€์ƒ ๋ฉด์ ‘ ์‚ฌ๋ก€๋กœ ๋ฐฐ์šฐ๋Š” ๋Œ€๊ทœ๋ชจ ์‹œ์Šคํ…œ ์„ค๊ณ„ ๊ธฐ์ดˆ (1)
      • ์˜ค๋ธŒ์ ํŠธ - ์กฐ์˜ํ˜ธ (7)
      • ์นœ์ ˆํ•œ SQL ํŠœ๋‹ (7)
    • ํšŒ๊ณ  (2)
hELLO ยท Designed By ์ •์ƒ์šฐ.
์šฐ๊ทœ์ด์ธ์šฐ์œค

Eager To Learn ๐ŸŒŒ

๐Ÿ‘จ๐Ÿป‍๐Ÿ’ป PS/JAVA

[JAVA] ๋ฐฑ์ค€ 11052๋ฒˆ ใ€์นด๋“œ ๊ตฌ๋งคํ•˜๊ธฐใ€‘

2022. 10. 1. 23:05


๋‚ด๊ฐ€ ์ง„ํ–‰ํ•˜๊ณ  ์žˆ๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜ dp ๋งˆ์ง€๋ง‰ ๋ฌธ์ œ์ด๋‹ค!

 

์ด์ œ dp ๋ฌธ์ œ๋Š” ์‰ฝ๊ฒŒ ํ•ด๊ฒฐ๋ฒ•์ด ๋– ์˜ค๋ฅด๋Š” ๊ฒƒ ๊ฐ™๋‹ค.

 

์—ญ์‹œ๋‚˜, dp ๋ฐฐ์—ด์— ์–ด๋–ค ๊ฐ’์„ ๋„ฃ์–ด์•ผ ํ• ์ง€ ๊ณ ๋ฏผํ•˜๊ณ , dp๊ฐ’๋“ค ์‚ฌ์ด์— ๊ด€๊ณ„๋ฅผ ๋งบ์–ด์ฃผ๋Š”๊ฒŒ ์ค‘์š”ํ•˜๋‹ค.

 

dp[i] ์—๋Š” ์ฃผ์–ด์ง„ ์นด๋“œํŒฉ์„ ํ™œ์šฉํ•ด์„œ i์žฅ์„ ์‚ด๋•Œ ์ง€๋ถˆํ•˜๋Š” ์ตœ๋Œ€ ๊ธˆ์•ก์„ ๊ธฐ๋กํ•  ๊ฒƒ์ด๋‹ค.

 


 

๋ณดํ†ต, ์˜ˆ์ œ๋ฅผ ๋ณด๋ฉด ๊ทœ์น™์ด ์–ด๋А์ •๋„ ๋ณด์ธ๋‹ค.

 

๋ฌธ์ œ์—์„œ ์ฒ˜๋Ÿผ, 4์žฅ์„ ๋ฝ‘์•„์•ผ ๋˜๋Š” ์ƒํ™ฉ์—์„œ

 

์นด๋“œ ํŒฉ ๋ฐฐ์—ด์„ cp ๋ผ๊ณ  ํ–ˆ์„ ๋•Œ 

 

1์žฅ ์นด๋“œ ํŒฉ = 3์› = cp[1]

2์žฅ ์นด๋“œ ํŒฉ = 5์› = cp[2]

3์žฅ ์นด๋“œ ํŒฉ = 15์› = cp[3]

4์žฅ ์นด๋“œ ํŒฉ = 16์› = cp[4]

 

์„ ์ƒ๊ฐํ•ด๋ณด์ž.

 

dp[1] ์€ 1์žฅ ์นด๋“œํŒฉ์„ ์‚ฌ๋Š” ๊ฒฝ์šฐ ๋ฐ–์— ์—†์œผ๋ฏ€๋กœ dp[1] = cp[1] = 3์›์ด๋‹ค.

 

 

 

dp[2] ๋Š” 2์žฅ์„ ๊ตฌ๋งคํ•ด์•ผํ•˜๋Š”๋ฐ,

 

1์žฅ ์นด๋“œํŒฉ์„ 2๊ฐœ ์‚ฌ๋Š” ๊ฒฝ์šฐ์™€ 2์žฅ ์นด๋“œํŒฉ์„ 1๊ฐœ ์‚ฌ๋Š” ๊ฒฝ์šฐ๊ฐ€ ์žˆ๋‹ค.

 

์ฆ‰, cp[2] ์™€ cp[1] + cp[1] ์ค‘ ๋” ํฐ๊ฐ’์œผ๋กœ ์ •ํ•ด์•ผ ํ•˜๋Š”๋ฐ

 

cp[2] = 5 > cp[1] + cp[1] = 6 ์ด๋ฏ€๋กœ 

 

dp[2] = 6์ด ๋œ๋‹ค.

 

 

 

dp[3]์€ 3์žฅ ์นด๋“œํŒฉ์„ 1๊ฐœ ์‚ฌ๋Š” ๊ฒฝ์šฐ์™€

 

2์žฅ ์นด๋“œํŒฉ 1๊ฐœ์™€ 1์žฅ ์นด๋“œํŒฉ 1๊ฐœ๋ฅผ ์‚ฌ๋Š” ๊ฒฝ์šฐ์™€ 

 

1์žฅ ์นด๋“œํŒฉ 3๊ฐœ๋ฅผ ์‚ฌ๋Š” ๊ฒฝ์šฐ๊ฐ€ ์žˆ์„ ๊ฒƒ์ด๋‹ค.

 

cp[3] ๊ณผ cp[2]+cp[1] ๊ณผ cp[1]+cp[1]+cp[1] ์ค‘ ๊ฐ€์žฅ ํฐ ๊ฐ’์ด ๊ธฐ๋ก๋  ๊ฒƒ์ด๋‹ค.

 

cp[2]+cp[1] ๊ณผ cp[1]+cp[1]+cp[1]์˜ ๋Œ€์†Œ๊ด€๊ณ„๋Š” 

 

dp[2] = max(cp[2] , cp[1] + cp[1]) ์ด๋ฏ€๋กœ dp[2] ๊ฐ€ ๊ฒฐ์ •ํ•ด์ฃผ๊ธฐ ๋•Œ๋ฌธ์—

 

dp[2]+dp[1] ํ•˜๋‚˜์˜ ํ•ญ์œผ๋กœ ๋น„๊ตํ•ด๋„ ์„ฑ๋ฆฝํ•œ๋‹ค.

 

์ฆ‰ cp[3]๊ณผ dp[2]+dp[1] ์ค‘ ํฐ ๊ฐ’์„ dp[3]์— ๊ธฐ๋กํ•˜๋ฉด๋œ๋‹ค.

 

 

์ด์ œ ์ผ๋ฐ˜ํ™”๋ฅผ ์‹œ์ผœ๋ณด๋ฉด

 

dp[n] = cp[n]   vs   dp[n-1] + dp[1]   vs   dp[n-2] + dp[2]   vs ······· vs   dp[1] + dp[n-1]   ์ค‘ ๊ฐ€์žฅ ํฐ๊ฐ’์„ ๊ธฐ๋กํ•˜๋ฉด ๋œ๋‹ค.

 

์ฐธ๊ณ ๋กœ,,

 

dp[1] + dp[n-1] == dp[n-1] + dp[1] ์ด๋ฏ€๋กœ

 

dp[n] = Max(cp[n] , dp[n-1] +dp[1] , dp[n-2]+dp[2], ·····,dp[n/2] + dp[2/n] ) ๋กœ ๋น„๊ตํ•˜๋Š” ํ•ญ์˜ ๊ฐฏ์ˆ˜๋ฅผ ์ค„์ผ ์ˆ˜ ์žˆ๋‹ค. (์ค„์ด์ง€ ์•Š์•„๋„ ์ •๋‹ต ์ฒ˜๋ฆฌ๋Š” ๋œ๋‹ค.)

 

์•„๋ฌดํŠผ ์œ„์™€ ๊ฐ™์€ ์›๋ฆฌ๋ฅผ ์ ์šฉํ•ด์„œ ์ฝ”๋”ฉํ•˜๋ฉด ๋œ๋‹ค!

 

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;

public class Main {
	public static void main(String[] args) throws IOException {	
		BufferedReader br =  new BufferedReader(new InputStreamReader(System.in));
		int N = Integer.valueOf(br.readLine());
		int [] dp = new int[N+1];
		String [] input = br.readLine().split(" ");
		int [] cardPack = new int [N+1];
		for(int i=0;i<N;i++) {
			cardPack[i+1] = Integer.valueOf(input[i]);
		}
		
//		System.out.println(Arrays.toString(cardPack));
		
		for(int i=1;i<=N;i++) {
			dp[i]=cardPack[i];
//			for(int j =1;j<=i-1;j++) { // ์ด๋ ‡๊ฒŒ ํ•ด๋„ ์ •๋‹ต ์ฒ˜๋ฆฌ๋Š” ๋œ๋‹ค.
            for(int j =1;j<=i/2;j++) {
				dp[i]=Math.max(dp[i], dp[j]+dp[i-j]);
			}
		}
//		System.out.println(Arrays.toString(dp));
		System.out.println(dp[N]);
	}
	
}

 

๋“œ๋””์–ด DP๊ฐ€ ๋๋‚ฌ๋‹ค. ๋‚ด์ผ๋ถ€ํ„ฐ๋Š” ์ •๋ ฌ ๋ฌธ์ œ๋ฅผ ํ’€์–ด๋ด์•ผ ๊ฒ ๋‹ค.

    '๐Ÿ‘จ๐Ÿป‍๐Ÿ’ป PS/JAVA' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
    • [JAVA] ๋ฐฑ์ค€ 11650๋ฒˆ ใ€์ขŒํ‘œ ์ •๋ ฌํ•˜๊ธฐใ€‘
    • [JAVA] ๋ฐฑ์ค€ 2751๋ฒˆ ใ€์ˆ˜ ์ •๋ ฌํ•˜๊ธฐ 2ใ€‘
    • [JAVA] ๋ฐฑ์ค€ 2011๋ฒˆ ใ€์•”ํ˜ธ์ฝ”๋“œใ€‘
    • [JAVA] ๋ฐฑ์ค€ 2225๋ฒˆ ใ€ํ•ฉ๋ถ„ํ•ดใ€‘
    ์šฐ๊ทœ์ด์ธ์šฐ์œค
    ์šฐ๊ทœ์ด์ธ์šฐ์œค
    ๊ฐœ๋ฐœ์ž ๊ฟˆ๋‚˜๋ฌด

    ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”