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

๐Ÿ“ ์•Œ๊ณ ๋ฆฌ์ฆ˜/Softeer

[Javascript(NodeJS)/Softeer] Lv3. ์ง•๊ฒ€๋‹ค๋ฆฌ (DP)

728x90

 

https://softeer.ai/practice/6293

 

Softeer - ํ˜„๋Œ€์ž๋™์ฐจ๊ทธ๋ฃน SW์ธ์žฌํ™•๋ณดํ”Œ๋žซํผ

 

softeer.ai

 


์†Œํ”„ํ‹ฐ์–ด ๋ ˆ๋ฒจ 3.

๋Œ€ํ‘œ์ ์ธ DP๋ฌธ์ œ์ธ ๋“ฏ ํ•˜๋‹ค!

ํฌ๊ธฐ ๋น„๊ต๊ฐ€ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๊ผญ ๊ผญ ๋ฐฐ์—ด์„ Number๋กœ ๋ฐ”๊ฟ”์ค˜์•ผ ํ•œ๋‹ค (์ด๊ฑฐ๋•Œ๋ฌธ์— ์ฒซ ์ œ์ถœ ํ‹€๋ฆผ ใ… ใ…กใ… )

์ž์Šค๋Š” ๋‚  ํž˜๋“ค๊ฒŒ ํ•ด.....๐Ÿซ 

 

ํ’€ ๋•Œ๋Š” ๋ชฐ๋ž์ง€๋งŒ LIS๋ผ๋Š” ๋ฌธ์ œ ์œ ํ˜•์ด๋ผ๊ณ  ํ•จ!!

 

<< ์ตœ์žฅ ์ฆ๊ฐ€ ๋ถ€๋ถ„ ์ˆ˜์—ด(LIS) ์•Œ๊ณ ๋ฆฌ์ฆ˜>>

Longest Increasing Subsequence

: ์ฃผ์–ด์ง„ ์ˆ˜์—ด์—์„œ ์›์†Œ๋“ค์˜ ์ˆœ์„œ๋ฅผ ์œ ์ง€ํ•˜๋ฉด์„œ ๊ฐ€์žฅ ๊ธด ์ฆ๊ฐ€ํ•˜๋Š” ๋ถ€๋ถ„ ์ˆ˜์—ด์„ ์ฐพ๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜

 

n๋ฒˆ์งธ ์ธ๋ฑ์Šค ๋Œ์„ ๋ฐŸ์„ ๋•Œ, ๋‚œ ์–ด๋””์„œ ์™”๋‚˜?๋ฅผ ์ƒ๊ฐํ•˜๋ฉด ๋œ๋‹ค.

๋Š˜ ๊ทธ๋ ‡์ง€๋งŒ dp๋Š” ์ฝ”ํ…Œ์— ๋‚˜์˜ค๋ฉด ํ•ญ์ƒ ์—ฐ์Šตํ–ˆ๋˜ ๊ฒƒ๋ณด๋‹ค ํ›จ์”ฌ ๋” ์–ด๋ ต๋‹ค ใ… ใ… 

 

๋‚˜์˜ ํ’€์ด

const fs = require('fs');
const input = fs.readFileSync(0,'utf-8').trim().split('\n');

let n = Number(input[0].trim());
let heightList = input[1].trim().split(' ').map(Number);

// n๋ฒˆ์งธ ๋Œ์„ ๋ฐŸ์„ ๋•Œ ์–ด๋””์„œ ์˜ฌ ์ˆ˜ ์žˆ๋Š”์ง€ ๊ฒฝ์šฐ์˜ ์ˆ˜
let dp = new Array(n).fill(1);
for(let i=0; i<n; ++i){
    let nownum = heightList[i];
    for(let j=0; j<i; ++j){
        if(nownum > heightList[j]) {
            dp[i] = Math.max(dp[j]+1, dp[i]);
        }
    }
}
console.log(Math.max(...dp));

 

728x90