ํฐ์คํ ๋ฆฌ ๋ทฐ
๋ฌธ์
N๊ฐ์ ์์ฐ์๋ก ์ด๋ฃจ์ด์ง ์์ด์ด ์ฃผ์ด์ก์ ๋, ๊ทธ ์ค์์ ๊ฐ์ฅ ๊ธธ๊ฒ ์ฆ๊ฐํ๋(์์ ์์์ ํฐ ์๋ก) ์์๋ค์ ์งํฉ์ ์ฐพ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ๋ผ. ์๋ฅผ ๋ค์ด, ์์๊ฐ 2, 7, 5, 8, 6, 4, 7, 12, 3 ์ด๋ฉด ๊ฐ์ฅ ๊ธธ๊ฒ ์ฆ๊ฐํ๋๋ก ์์๋ค์ ์ฐจ๋ก๋๋ก ๋ฝ์๋ด๋ฉด 2, 5, 6, 7, 12๋ฅผ ๋ฝ์๋ด์ด ๊ธธ์ด๊ฐ 5์ธ ์ต๋ ๋ถ๋ถ ์ฆ๊ฐ ์์ด์ ๋ง๋ค ์ ์๋ค.
๋ฌธ์ ํ์ด
์ต์ฅ ์ฆ๊ฐ ๋ถ๋ถ ์์ด(LIS, Longest Increasing Subsequence)
- ์์๊ฐ n๊ฐ์ธ ๋ฐฐ์ด์ ์ผ๋ถ ์์๋ฅผ ๊ณจ๋ผ๋ด์ ๋ง๋ ๋ถ๋ถ ์์ด ์ค, ๊ฐ ์์๊ฐ ์ด์ ์์๋ณด๋ค ํฌ๋ค๋ ์กฐ๊ฑด์ ๋ง์กฑํ๊ณ , ๊ทธ ๊ธธ์ด๊ฐ ์ต๋์ธ ๋ถ๋ถ ์์ด์ ์ผ์ปซ์
ํด๋น ๋ฌธ์ ์์ ๊ธธ์ด๊ฐ ์ต๋์ธ ๋ถ๋ถ์์ด์ ๊ฐ๋ง์ ์ฐธ์กฐํ์ฌ 1์ ๊ฐ์ฐํ๋ค๋ ํ์ด๋ ๋ค์ ํฌ์คํ ์ ๋ฌธ์ ๋ฅผ ํ์ด ๋ด์ผ๋ก์จ ์ข ๋ ์ฝ๊ฒ ์ดํดํ ์ ์์๋ค.
https://choi95.tistory.com/33?category=854389
๋ณด์ด๋ ํ์
์ ์๋์ด N(1<=N<=1000)๋ช ์ ํ์์ ์ผ๋ ฌ๋ก ์ธ์ ๋ค. ์ผ๋ ฌ๋ก ์ ์๋ ํ์์ ํค๊ฐ ์์์๋ถํฐ ์์๋๋ก ์ฃผ์ด์ง ๋, ๋งจ ์์ ์ ์๋ ์ ์๋์ด ๋ณผ ์ ์๋ ํ์์ ์๋ฅผ ๊ตฌํ๊ณ ์ ํ๋ค. (์์ ์ ์๋
choi95.tistory.com
์ฝ๋
function solution(arr) {
let answer = 0;
let dy = Array.from({length: arr.length}, () => 0);
dy[0] = 1;
for(let i = 1; i < arr.length; i++) {
let max = 0; //์ด๋ ํ ์์์ ๊ฐ๋ณด๋ค ํฌ์ง ์์ ๊ฒฝ์ฐ ๊ทธ ๊ฐ์ด ์๊ธฐ ์์ ๋ง์ ํฌํจํ ๊ฒฝ์ฐ์ ์์ธ 1๋ก ์ด๊ธฐํ ๋ ์ ์๋๋ก
for(let j = i - 1; j >= 0; j--) {
if(arr[i] > arr[j] && dy[j] > max) { //์ด์ ์์๋ณด๋ค ํฌ๊ณ ํด๋น ์์์ ๋ถ๋ถ์์ด์ด ์ต์ฅ์ผ ๊ฒฝ์ฐ
max = dy[j];
}
}
dy[i] = max + 1;
}
answer = Math.max(...dy);
return answer;
}
let arr = [5, 3, 7, 8, 6, 2, 9, 4];
console.log(solution(arr));
function solution(arr){
let answer=0;
let dy=Array.from({length:arr.length}, ()=>0);
dy[0]=1;
for(let i=1; i<arr.length; i++){
let max=0;
for(let j=i-1; j>=0; j--){
if(arr[j]<arr[i] && dy[j]>max){
max=dy[j];
}
}
dy[i]=max+1;
answer=Math.max(answer, dy[i]);
}
return answer;
}
let arr=[5, 3, 7, 8, 6, 2, 9, 4];
console.log(solution(arr));
'์๊ณ ๋ฆฌ์ฆ > ํ๊ทธ ๋ณ ํ์ด' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[์ ํด๋ฆฌ๋ ํธ์ ๋ฒ]์ต๋๊ณต์ฝ์์ ์ต์๊ณต๋ฐฐ์ (0) | 2021.09.03 |
---|---|
[๋ ์ ์๊ณ ๋ฆฌ์ฆ]๋์ ๊ตํ (0) | 2021.08.17 |
[๋์ ๊ณํ๋ฒ]๊ณ๋จ์ค๋ฅด๊ธฐ (0) | 2021.08.15 |
[DFS/BFS]์ฌ๋๋ผ ์์ผ๋๋ (0) | 2021.08.14 |
[BFS: ์ํํธ๋ฆฌํ์]์ก์์ง ์ฐพ๊ธฐ (0) | 2021.08.13 |