๋ณธ๋ฌธ์œผ๋กœ ๋ฐ”๋กœ๊ฐ€๊ธฐ

https://softeer.ai/practice/result.do?eventIdx=1&submissionSn=SW_PRBL_SBMS_187431&psProblemId=390 

 

https://softeer.ai/practice/result.do?eventIdx=1&psProblemId=390&submissionSn=SW_PRBL_SBMS_187431

 

softeer.ai


1. ๋ฌธ์ œ

๋Œ์˜ ๊ฐœ์ˆ˜ N์ด ์ฃผ์–ด์ง€๊ณ , ๋†’์ด๊ฐ€ ์ ์  ๋†’์€ ๋Œ์„ ๋ฐŸ์œผ๋ฉด์„œ ์ง€๋‚˜๊ฐ€๊ณ  ์‹ถ์„ ๋•Œ

๋Œ์˜ ๋†’์ด๊ฐ€ ์„œ์ชฝ๋ถ€ํ„ฐ ๋™์ชฝ๊นŒ์ง€ ์ฃผ์–ด์กŒ์„ ๋•Œ ๋ฐŸ์„ ์ˆ˜ ์žˆ๋Š” ๋Œ์˜ ์ตœ๋Œ€ ๊ฐœ์ˆ˜๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค.

 

2. ํ’€์ด

์ตœ์žฅ์ฆ๊ฐ€๋ถ€๋ถ„์ˆ˜์—ด ๋ฌธ์ œ์ด๋‹ค. dp๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ํšจ์œจ์ ์ธ ๋ฌธ์ œ์ด๋‹ค.

arr[]์— ์ž…๋ ฅ ๊ฐ’์„ ๋„ฃ๊ณ  dp[]์— ๊ฐ๊ฐ 1์„ ๋„ฃ๋Š”๋‹ค.

for๋ฌธ์„ 0๋ถ€ํ„ฐ N๊นŒ์ง€ ๋Œ๋ฆฌ๊ณ  ๊ทธ ์•ˆ์— for๋ฌธ์„ 0๋ถ€ํ„ฐ i๊นŒ์ง€(๋ฏธํฌํ•จ) ๋Œ๋ ค์„œ

arr[i] > arr[j]์ผ ๋•Œ dp๊ฐ€ ์ตœ๋Œ€๊ฐ€ ๋  ์ˆ˜ ์žˆ๋Š” ๊ฐ’์„ ์ฐพ๊ณ  ํ•ด๋‹น ๊ฐ’์„ dp[i]์— ๋„ฃ์–ด์ค€๋‹ค.

์ฆ‰, dp[i] = Math.max(dp[i], dp[j]+1);์„ ๋ฐ˜๋ณตํ•˜๋Š” ๊ฒƒ์ด๋‹ค.

๋‚ด๋ถ€ for๋ฌธ์ด ๋๋‚ฌ์„ ๋•Œ์˜ ํ™•์ •๋œ dp[i] ๊ฐ’๊ณผ ans๋ฅผ ๋น„๊ตํ•˜์—ฌ ๊ฐ€์žฅ ํฐ dp[] ๊ฐ’์ด ์ตœ๋Œ€ ๊ธธ์ด(๋ฐŸ์„ ์ˆ˜ ์žˆ๋Š” ๋Œ ์ตœ๋Œ€ ๊ฐœ์ˆ˜)๊ฐ€ ๋œ๋‹ค.

 

3. ์ฝ”๋“œ

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


public class Main
{
    static int N, ans;
    static int[] arr, dp;

    public static void main(String args[]) throws Exception
    {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        N = Integer.parseInt(br.readLine());
        arr = new int[N];
        dp = new int[N];

        StringTokenizer st = new StringTokenizer(br.readLine());
        for (int i=0; i<N; i++) {
            arr[i] = Integer.parseInt(st.nextToken());
            dp[i] = 1;
        }

        solution();
        System.out.println(ans);
    }

    static void solution() {
        for (int i=0; i<N; i++) {
            for (int j=0; j<i; j++) {
                if (arr[i] > arr[j]) {
                    dp[i] = Math.max(dp[i], dp[j]+1);
                }
            }
            ans = Math.max(ans, dp[i]);
        }
    }
}

 

4. ์‚ฌ๋‹ด

์ตœ์žฅ์ฆ๊ฐ€๋ถ€๋ถ„์ˆ˜์—ด dp ํ’€์ด๋Š” ํ”ํ•˜์ง€ ์•Š์€ ์œ ํ˜•์ด๋ผ๊ณ  ์ƒ๊ฐํ–ˆ๊ณ  ์žฌ๋ฐŒ๋Š” ๋ฌธ์ œ์˜€๋‹ค.