728x90
소스코드
let fs = require('fs');
const filePath = process.platform === `linux` ? `/dev/stdin` : `예제.txt`;
let input = fs.readFileSync(filePath).toString().split('\n');
const c = console.log
let lst = []
for (let i = 1 ; i <= input[0] ; i++){
let numbers = input[i].split(" ").map(Number)
lst.push(numbers)
}
lst.sort((a,b) => a[0] - b[0])
let dp = []
for(let i = 0 ; i < Number(input[0]) ; i++){
dp[i] = 1
}
for(let i = 1 ; i < Number(input[0]) ; i++){
for(let j = 0; j < i ; j++){
if(lst[j][1] < lst[i][1]){
dp[i] = Math.max(dp[i],dp[j]+1)
}
}
}
c(Number(input[0]) - Math.max(...dp))
풀이
전봇대 a를 기준으로 오름차순으로 정렬해 준 후 대각선이 겹친다는 것은 a -> b로 가는 선이 두개가 존재 할때 x 자로 된다는 것인데 전봇대 b도 가장 긴 오름차순 즉 가장 긴 증가하는 수열을 구하면된다.
문제
https://www.acmicpc.net/problem/2565
2565번: 전깃줄
첫째 줄에는 두 전봇대 사이의 전깃줄의 개수가 주어진다. 전깃줄의 개수는 100 이하의 자연수이다. 둘째 줄부터 한 줄에 하나씩 전깃줄이 A전봇대와 연결되는 위치의 번호와 B전봇대와 연결되는
www.acmicpc.net
728x90
'BOJ > 다이나믹 프로그래밍' 카테고리의 다른 글
BOJ : 5557 1학년 (JS) (0) | 2023.01.18 |
---|---|
BOJ : 2293 동전1 (파이썬 + 자바스크립트) (0) | 2023.01.17 |
BOJ : 14606 피자 (JS) (0) | 2023.01.15 |
BOJ : 11048 이동하기 (JS) (0) | 2023.01.14 |
BOJ : 12865 평범한 배낭 (JS) (0) | 2023.01.09 |