-
해당 문제는 이제 약간 좌표 관련된 문제를 풀어보려고 예전에 한번 문제를 본 게 기억이나 해결하기 위해 시도해 보았으며, 구글링을 통해 어떤 식으로 문제들을 풀었는지를 먼저 확인한 다음에 문제를 해결해 보았다.
https://www.acmicpc.net/problem/1002
1002번: 터렛
각 테스트 케이스마다 류재명이 있을 수 있는 위치의 수를 출력한다. 만약 류재명이 있을 수 있는 위치의 개수가 무한대일 경우에는 -1을 출력한다.
www.acmicpc.net
https://github.com/JUNGSOONIL/JAVA/blob/main/BAEKJOON%201002
GitHub - JUNGSOONIL/JAVA: JAVA 소스 코드
JAVA 소스 코드. Contribute to JUNGSOONIL/JAVA development by creating an account on GitHub.
github.com
문제는 두 명의 좌표가 주어지고 적과의 거리가 주어젔을때 적이 있을 수 있는 좌표의 개수를 출력하는 프로그램을 작성하는 것이다.
조건
위치의 개수가 무한대일 경우에는 -1 출력
처음에는 문제를 뭐 좌표 간에 거리랑 그런 걸 파악해서 해결해야 할 것 같다는 생각은 하고 접근은 해보았지만 도저히 내 머리론 해결 못할 거 같아서 구글링을 통해 사람들이 어떻게 풀어왔는지 보았는데 이 문제는 각 좌표가 원의 중심이고 거리가 반지름인 원 두 개의 접점 여부로 해결하는 문제인 걸 확인했다.
경우의 수는 이제 아래 사진과 같다.
두 원이 겹치는 경우는 x1==x2&&y1==y2&&r1==r2로 체크해 주면 되고 두 원이 외부에서 안 겹칠 땐 두 원 중심 좌표 거리가 두 원의 반지름 합보다 클 경우로 체크해 주고, 내부에서 안 겹칠 땐 좌표 거리가 두 원의 반지름 차보다 작을 경우로 체크해 준다.
두원이 외부에서 겹칠 경우에는 좌표 거리가 두 원의 반지름 합과 같을 경우로 체크해 주고, 두원이 내부에서 겹칠 경우는 좌표 거리가 두 원의 반지름 차와 같을 경우로 체크해 주면 된다.
이후 나머지 모든 부분은 두원이 두개로 겹칠 때이므로 간단하게 해결 가능하다.
728x90'알고리즘 > Baekjoon' 카테고리의 다른 글
Baekjoon 1912 연속합 JAVA (0) 2021.11.05 Baekjoon 1049 기타줄 JAVA (0) 2021.11.05 Baekjoon 11399 ATM JAVA (0) 2021.11.05 Baekjoon 9095 1, 2, 3 더하기 JAVA (0) 2021.11.05 Baekjoon 1929 소수 구하기 JAVA (0) 2021.11.05 댓글