https://www.acmicpc.net/problem/1004
const fs = require("fs");
const input = fs.readFileSync("/dev/stdin").toString().split("\n");
const T = Number(input.shift());
function solution(x1, y1, x2, y2, n, planets) {
let answer = 0 ;
for (let [cx,cy,r] of planets) {
let first = Math.sqrt(((x1-cx)**2)+ ((y1-cy)**2)) ;
let second = Math.sqrt(((x2-cx)**2)+ ((y2-cy)**2)) ;
if (first <= r) answer ++
if (second <= r) answer ++
if (first <= r && second <= r) answer -= 2 ;
}
return answer ;
}
for (let i = 0; i < T; i++) {
const [x1, y1, x2, y2] = input.shift().split(" ").map(Number);
const n = Number(input.shift());
const planets = [];
for (let j = 0; j < n; j++) planets.push(input.shift().split(" ").map(Number));
console.log(solution(x1, y1, x2, y2, n, planets)) ;
}
사실 처음에 어떻게 풀어야할지 몰라서 다른 풀이를 참고해서 작성했다.
출발점과 도착점이 각각 행성계 안에 있으면 answer에 1씩 증가시킨다.
단, 출발점과 도착점 둘다 하나의 행성계 안에 있으면 굳이 진입/이탈을 할 필요가 없으니 2를 빼준다
이 부분만 알면 사실 코드짜는건 쉬운데,, 여기까지 생각한게 어렵.....ㅠ