백준 SILVER 3(터렛)
-
사용 언어 : javascript
-
해결 날짜 : 2023-01-26
-
해결 방법 :
- 입력으로 받은 두 좌표((x1, y1), (x2, y2))와 반지름(r1, r2)를 통해 두 원의 중심 거리와 반지름 차이의 절댓값을 구함
- 두 원의 중심 거리와 반지름이 모두 같은 경우(동일한 원) 나올 수 있는 접점은 무한대이므로 -1 반환
- 두 원의 중심 거리가 반지름의 합보다 작고, 차보다 큰 경우 두 접점에서 만나는 원이므로 2 반환
- 두 원의 중심 거리가 반지름의 합과 같거나(외접원) 차와 같은 경우(내접원) 한 접점에서 만나는 원이므로 1 반환
- 그 외의 경우 접점이 없으므로 0 반환
-
회고 :
- string 값인 prop number로 변환
- input 받을 때 trim()
-
코드
const fs = require('fs'); const filePath = process.platform === 'linux' ? '/dev/stdin' : '../input.txt'; let input = fs.readFileSync(filePath).toString().trim(); solution(input); function solution(props) { props = props.split('\n').slice(1); props.forEach((prop) => { const [x1, y1, r1, x2, y2, r2] = prop.split(' ').map((e) => +e); const distance = Math.sqrt((y2 - y1) ** 2 + (x2 - x1) ** 2); const difference = Math.abs(r2 - r1); let result; if (distance === 0 && r1 === r2) { result = -1; } else if (distance < r1 + r2 && distance > difference) { result = 2; } else if (distance === r1 + r2 || distance === difference) { result = 1; } else { result = 0; } console.log(result); }); }
-
출처: 백준