๐Ÿ“œ ์ฝ”๋”ฉํ…Œ์ŠคํŠธ/BAEKJOON\๋‹ค์ด๋‚˜๋ฏน ํ”„๋กœ๊ทธ๋ž˜๋ฐ

๋ฐฑ์ค€ 11053๋ฒˆ (DP) - ๊ฐ€์žฅ ๊ธด ์ฆ๊ฐ€ํ•˜๋Š” ๋ถ€๋ถ„ ์ˆ˜์—ด (JAVA) ๋ฌธ์ œ ํ’€์ด

2021. 8. 18. 13:37
๋ฐ˜์‘ํ˜•

https://www.acmicpc.net/problem/11053

 

11053๋ฒˆ: ๊ฐ€์žฅ ๊ธด ์ฆ๊ฐ€ํ•˜๋Š” ๋ถ€๋ถ„ ์ˆ˜์—ด

์ˆ˜์—ด A๊ฐ€ ์ฃผ์–ด์กŒ์„ ๋•Œ, ๊ฐ€์žฅ ๊ธด ์ฆ๊ฐ€ํ•˜๋Š” ๋ถ€๋ถ„ ์ˆ˜์—ด์„ ๊ตฌํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜์‹œ์˜ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ์ˆ˜์—ด A = {10, 20, 10, 30, 20, 50} ์ธ ๊ฒฝ์šฐ์— ๊ฐ€์žฅ ๊ธด ์ฆ๊ฐ€ํ•˜๋Š” ๋ถ€๋ถ„ ์ˆ˜์—ด์€ A = {10, 20, 10, 30, 20, 50} ์ด

www.acmicpc.net


 

โœ๏ธ ๋ฌธ์ œ

 


๐Ÿ” ๋ฌธ์ œ ํ•ด๊ฒฐ

๋ฌธ์ œ๋ฅผ ์ดํ•ดํ•˜์ง€ ๋ชปํ•ด์„œ ํ—ค๋งธ๋˜ ๋ฌธ์ œ์ด๋‹ค..

์•„๋ž˜ ์„ค๋ช…๊ณผ ํ•จ๊ป˜ ํ’€์ด๋ฅผ ํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

 

1. ํ…Œ์ด๋ธ” ์ •์˜

1์ฐจ์› ๋ฐฐ์—ด dp[i]๋Š” i ๋ฒˆ์งธ ์ˆ˜๊นŒ์ง€์˜ ๊ฐ€์žฅ ๊ธด ์ฆ๊ฐ€ํ•˜๋Š” ์ˆ˜์—ด์˜ ๊ธธ์ด๋ฅผ ๋œปํ•ฉ๋‹ˆ๋‹ค.

์•„์ง ์ž˜ ์ดํ•ด๊ฐ€ ์•ˆ๋˜์‹œ๋Š” ๋ถ„๋“ค์„ ์œ„ํ•ด ์•„๋ž˜ ์ฝ”๋“œ๋กœ ์„ค๋ช…ํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

10 20 30 20 30

dp[0] = 1;    // 10
dp[1] = 2;    // 10 -> 20
dp[2] = 3;    // 10 -> 20 -> 30
dp[3] = 2;    // 10 -> 20
dp[4] = 3;    // 10 -> 20 -> 30
  • dp[0]์€ *์ œ๊ฐ€ ํ—ท๊ฐˆ๋ ธ๋˜ ๋ถ€๋ถ„์ธ๋ฐ ์‹œ์ž‘ ๋ถ€๋ถ„์ด๊ธฐ ๋•Œ๋ฌธ์— ๊ธธ์ด 1์„ ๊ฐ€์ง‘๋‹ˆ๋‹ค. (dp[i]๊ฐ’์€ 1๋กœ ์ดˆ๊ธฐํ™”๋ฅผ ํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค.)
  • dp[1]์€ 0 ๋ฒˆ์งธ ๋ณด๋‹ค ์ฆ๊ฐ€ํ•˜๊ธฐ ๋•Œ๋ฌธ์— dp[0] + 1 ๊ฐ’์„ ๊ฐ€์ง‘๋‹ˆ๋‹ค.
  • dp[2]๋Š” 0 ๋ฒˆ์งธ, 1 ๋ฒˆ์งธ ์ˆœ์œผ๋กœ ์ฆ๊ฐ€ํ•˜๊ธฐ ๋•Œ๋ฌธ์— dp[1] + 1 ๊ฐ’์„ ๊ฐ€์ง‘๋‹ˆ๋‹ค.
  • dp[3]์€ 0 ๋ฒˆ์งธ, 3 ๋ฒˆ์งธ ์ˆœ์œผ๋กœ ์ฆ๊ฐ€ํ•˜๊ธฐ ๋•Œ๋ฌธ์— dp[0] + 1 ๊ฐ’์„ ๊ฐ€์ง‘๋‹ˆ๋‹ค.
  • dp[4]๋Š” 0 ๋ฒˆ์งธ, 3 ๋ฒˆ์งธ, 4 ๋ฒˆ์งธ ์ˆœ์œผ๋กœ ์ฆ๊ฐ€ํ•˜๊ธฐ ๋•Œ๋ฌธ์— dp[3] + 1 ๊ฐ’์„ ๊ฐ€์ง‘๋‹ˆ๋‹ค.

 

2. ์ ํ™”์‹ ์„ธ์šฐ๊ธฐ

์œ„์—์„œ ์„ค๋ช…ํ–ˆ๋“ฏ์ด dp[i]๋Š” j ๋ฒˆ์งธ ์ˆ˜ ๋ณด๋‹ค ํฐ ๊ฒฝ์šฐ, dp[j] + 1 ๊ฐ’์„ ๊ฐ€์ง‘๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์šฐ๋ฆฌ๋Š” ์ตœ๋Œ€๊ฐ’์„ ์ฐพ์•„์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— dp[i]์™€ dp[j] + 1 ๊ฐ’ ์ค‘ ํฐ ๊ฐ’์„ ์„ ํƒํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.

 

์‹์œผ๋กœ ๋‚˜ํƒ€๋‚ด๋ฉด ์•„๋ž˜์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค.

// ์กฐ๊ฑด : j ๋ฒˆ์งธ ์ˆ˜๋ณด๋‹ค i ๋ฒˆ์งธ ์ˆ˜๊ฐ€ ํด ๊ฒฝ์šฐ
dp[i] = Math.max(dp[i], dp[j] + 1);

 

3. ์ดˆ๊ธฐ๊ฐ’ ์„ค์ •

i ๋ฒˆ์งธ์˜ ์ˆ˜๋“ค์€ ๋ชจ๋‘ ์ˆ˜์—ด์˜ ์‹œ์ž‘์ ์ด ๋  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์—, dp[i]์˜ ๊ฐ’์€ ๋ชจ๋‘ 1๋กœ ์ดˆ๊ธฐํ™”๋ฅผ ์‹œ์ผœ์•ผ ํ•ฉ๋‹ˆ๋‹ค.

for(int i=0; i<N; i++) {
    dp[i] = 1;
}

 

๐Ÿ— ์ „์ฒด ์ฝ”๋“œ

import java.io.*;
import java.util.*;

public class Main {
    public static void main(String args[]) throws IOException {
        BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));

        int N = Integer.parseInt(bf.readLine());

        int[] arr = new int[N];
        int[] dp = new int[N];

        StringTokenizer st = new StringTokenizer(bf.readLine());

        // dp ์›์†Œ๋ฅผ 1๋กœ ์ดˆ๊ธฐํ™”!
        for(int i=0; i<N; i++) {
            arr[i] = Integer.parseInt(st.nextToken());
            dp[i] = 1;
        }

        // i๋ฒˆ์งธ๋ฅผ ๊ธฐ์ค€์œผ๋กœ j๋ฒˆ์งธ์˜ ์ˆ˜๊ฐ€ ํฌ๋‹ค๋ฉด -> dp[i]+1๊ฐ’๊ณผ dp[j] ์ค‘ ํฐ ๊ฐ’์„ ๋„ฃ์–ด์ค๋‹ˆ๋‹ค.
        for(int i=0; i<N; i++) {
            for(int j=i+1; j<N; j++) {
                if(arr[i] < arr[j]) {
                    dp[j] = Math.max(dp[j], dp[i] + 1);
                }
            }
        }

        // ๊ฒฐ๊ณผ ๊ฐ’์œผ๋กœ dp[i] ์ค‘ ๊ฐ€์žฅ ํฐ ๊ฐ’์„ ์ถœ๋ ฅํ•ด์ค๋‹ˆ๋‹ค.
        int MAX = 0;
        for(int i=0; i<N; i++) {
            if(MAX < dp[i]) MAX = dp[i];
        }

        System.out.print(MAX);
    }
}
๋ฐ˜์‘ํ˜•
์ €์ž‘์žํ‘œ์‹œ (์ƒˆ์ฐฝ์—ด๋ฆผ)
'๐Ÿ“œ ์ฝ”๋”ฉํ…Œ์ŠคํŠธ/BAEKJOON\๋‹ค์ด๋‚˜๋ฏน ํ”„๋กœ๊ทธ๋ž˜๋ฐ' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
  • ๋ฐฑ์ค€ 15486๋ฒˆ (DP) - ํ‡ด์‚ฌ 2 (JAVA) ๋ฌธ์ œ ํ’€์ด
  • ๋ฐฑ์ค€ 10844๋ฒˆ (DP) - ์‰ฌ์šด ๊ณ„๋‹จ ์ˆ˜ (JAVA) ๋ฌธ์ œ ํ’€์ด
  • ๋ฐฑ์ค€ 2156๋ฒˆ (DP) : ํฌ๋„์ฃผ ์‹œ์‹ (JAVA) ๋ฌธ์ œ ํ’€์ด
  • ๋ฐฑ์ค€ 1003๋ฒˆ(DP) - ํ”ผ๋ณด๋‚˜์น˜ ํ•จ์ˆ˜ (JAVA) ๋ฌธ์ œ ํ’€์ด
iseunghan
iseunghan
๊พธ์ค€ํ•˜๊ฒŒ ์—ด์‹ฌํžˆ..
iseunghan
iseunghan

๊ณต์ง€์‚ฌํ•ญ

  • ์–ด์ œ๋ณด๋‹ค ๋‚˜์€ ์˜ค๋Š˜์ด ๋˜๊ธฐ ์œ„ํ•ด ๐Ÿ”ฅ
  • ๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ (260)
    • ๐Ÿ’ Spring (14)
      • ๊ฐœ๋… ๋ฐ ์ดํ•ด (2)
      • Spring ํ•ต์‹ฌ ๊ธฐ์ˆ  (24)
      • Spring REST API (8)
      • Spring MVC, DB ์ ‘๊ทผ ๊ธฐ์ˆ  (7)
      • Spring Security (23)
      • Spring in Action (1)
    • ๐ŸŒป JAVA (84)
      • ์ž๋ฐ” ORM ํ‘œ์ค€ JPA ํ”„๋กœ๊ทธ๋ž˜๋ฐ (20)
      • ์•Œ๊ณ ๋ฆฌ์ฆ˜, ์ž๋ฃŒ๊ตฌ์กฐ (13)
      • ๋””์ž์ธ ํŒจํ„ด (7)
      • ์ •๋ฆฌ์ •๋ฆฌ์ •๋ฆฌ (43)
      • JUnit (1)
    • ๐Ÿ”– Snippets (3)
      • Javascript (3)
    • โš™๏ธ Devops (22)
      • โ› Git (11)
      • ๐Ÿณ Docker (6)
      • ๐Ÿง Linux (3)
      • ๐ŸŒˆ Jenkins (1)
      • ๐Ÿ“ฌ Kafka (1)
    • ๐Ÿ’ฌ ETC.. (4)
      • ๐Ÿ’ป macOS (2)
    • ๐ŸŒง๏ธ ORM (2)
      • JPA (2)
    • ๐Ÿ Python (1)
    • ๐Ÿ“š Databases (15)
      • ์˜ค๋ผํด๋กœ ๋ฐฐ์šฐ๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ฐœ๋ก ๊ณผ ์‹ค์Šต(2ํŒ) (3)
      • RealMySQL 8.0 (8)
    • ๐Ÿ”ฅ Computer Science (5)
      • ๐Ÿ“ก ๋„คํŠธ์›Œํฌ (5)
    • ๐Ÿท๏ธ ํ˜‘์—… (1)
    • ๐Ÿ“œ ์ฝ”๋”ฉํ…Œ์ŠคํŠธ (38)
      • BAEKJOON\์ˆ˜ํ•™ 1, ์ˆ˜ํ•™ 2 (8)
      • BAEKJOON\์žฌ๊ท€ (5)
      • BAEKJOON\๋ธŒ๋ฃจํŠธ ํฌ์Šค (3)
      • BAEKJOON\์ •๋ ฌ (1)
      • BAEKJOON\๋ฐฑํŠธ๋ž˜ํ‚น (5)
      • BAEKJOON\BFS, DFS (6)
      • BAEKJOON\์ด๋ถ„ํƒ์ƒ‰ (1)
      • BAEKJOON\๋‹ค์ด๋‚˜๋ฏน ํ”„๋กœ๊ทธ๋ž˜๋ฐ (9)
      • BAEKJOON\๊ทธ๋ฆฌ๋”” ์•Œ๊ณ ๋ฆฌ์ฆ˜ (0)
    • โœจ ISEUNGHAN (1)

์ธ๊ธฐ ๊ธ€

์ตœ๊ทผ ๊ธ€

์ „์ฒด
์˜ค๋Š˜
์–ด์ œ
๋ฐ˜์‘ํ˜•
hELLO ยท Designed By ์ •์ƒ์šฐ.
iseunghan
๋ฐฑ์ค€ 11053๋ฒˆ (DP) - ๊ฐ€์žฅ ๊ธด ์ฆ๊ฐ€ํ•˜๋Š” ๋ถ€๋ถ„ ์ˆ˜์—ด (JAVA) ๋ฌธ์ œ ํ’€์ด
์ƒ๋‹จ์œผ๋กœ

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

๊ฐœ์ธ์ •๋ณด

  • ํ‹ฐ์Šคํ† ๋ฆฌ ํ™ˆ
  • ํฌ๋Ÿผ
  • ๋กœ๊ทธ์ธ

๋‹จ์ถ•ํ‚ค

๋‚ด ๋ธ”๋กœ๊ทธ

๋‚ด ๋ธ”๋กœ๊ทธ - ๊ด€๋ฆฌ์ž ํ™ˆ ์ „ํ™˜
Q
Q
์ƒˆ ๊ธ€ ์“ฐ๊ธฐ
W
W

๋ธ”๋กœ๊ทธ ๊ฒŒ์‹œ๊ธ€

๊ธ€ ์ˆ˜์ • (๊ถŒํ•œ ์žˆ๋Š” ๊ฒฝ์šฐ)
E
E
๋Œ“๊ธ€ ์˜์—ญ์œผ๋กœ ์ด๋™
C
C

๋ชจ๋“  ์˜์—ญ

์ด ํŽ˜์ด์ง€์˜ URL ๋ณต์‚ฌ
S
S
๋งจ ์œ„๋กœ ์ด๋™
T
T
ํ‹ฐ์Šคํ† ๋ฆฌ ํ™ˆ ์ด๋™
H
H
๋‹จ์ถ•ํ‚ค ์•ˆ๋‚ด
Shift + /
โ‡ง + /

* ๋‹จ์ถ•ํ‚ค๋Š” ํ•œ๊ธ€/์˜๋ฌธ ๋Œ€์†Œ๋ฌธ์ž๋กœ ์ด์šฉ ๊ฐ€๋Šฅํ•˜๋ฉฐ, ํ‹ฐ์Šคํ† ๋ฆฌ ๊ธฐ๋ณธ ๋„๋ฉ”์ธ์—์„œ๋งŒ ๋™์ž‘ํ•ฉ๋‹ˆ๋‹ค.