[javascript] 백준 2170번 선 긋기

bjyyyyy·2023년 2월 4일
0

문제보기

const fs = require("fs");
const filePath = process.platform === "linux" ? "/dev/stdin" : "./input.txt";
let input = fs.readFileSync(filePath).toString().trim().split("\n");

const N = Number(input.shift());
const line = input
    .map((item) => item.split(" ").map((value) => +value))
    .sort((a, b) => a[0] - b[0]); // x좌표를 기준으로 오름차순 정렬

let result = [line[0]]; // 제일 처음값을 기준으로 시작
let count = 0;
for (let i = 1; i < N; i++) {
    let [x, y] = line[i];
    if (x <= result[0][1] && y > result[0][1]) { // x보다 기준이 되는 좌표의 y가 크거나 같고 y가 기준이 되는 좌표의 y보다 크면 선이 이어지는 부분이다
        result[0][1] = y; // 기준좌표 y값을 갱신해준다.
    }
    if (x > result[0][1]) { // x가 기준좌표 y보다 크면 새로운 선이 생긴다
        count += result[0][1] - result[0][0]; // count에 기준좌표 y - x의 값을 더해주고
        result[0] = [x, y]; // 기준좌표를 새로 갱신해준다
    }
}
count += result[0][1] - result[0][0]; // 반복문이 종료된 후 기준좌표의 값을 count에 더해준다

console.log(count);

0개의 댓글