문제 : https://www.acmicpc.net/problem/1002
코드 : https://github.com/NaHwaSa/BOJ_BaekjunOnlineJudge/blob/master/01000/BOJ_1002.java
피타고라스 정리 정도만 알면 풀 수 있는 문제이다. 다만 상당히 귀찮은 문제이긴 한데, 모든 경우에 대해 분기를 쳐서 답을 구해야 한다. (그래서 문제를 푼 사람이 많은 문제임에도 정답 비율이 21%로 낮은 편이다.)
GPS 삼각측량처럼 위치를 계산하는건데, 2개의 지점에 대해 측량하므로 모든 케이스에서 정확한 위치를 알 순 없다. 각 점에서 r을 반지름으로 하는 원을 그렸을 때 서로의 원이 만나는 지점이 결국 류재명이 있는 위치라 할 수 있다.
그러니 모든 케이스를 생각만 해낼 수 있으면 풀 수 있다. 이하 각 케이스에 대해 설명한다.
조규현의 좌표를 A, 백승환의 좌표를 B라고 하겠다.
1. A와 B가 동일한 위치이고 둘의 r이 동일한 경우
-> 무한대 이므로 -1 이다. (코드의 39line)
2. (2023-06-22 추가) 단, r이 둘 다 0일 경우엔 한 점에서 만나므로
-> 1이다.
3. A와 B가 동일한 위치이고 둘의 r이 다른 경우
-> 만나는 위치가 없으므로 위치를 구할 수 없으므로 0이다. (코드의 41line)
4. A와 B 사이의 거리가 r1+r2와 동일한 경우
-> 위와 같은 경우이다. 만나는 지점이 1개이므로 1이다. (53line)
5. A와 B 사이의 거리가 r1+r2보다 큰 경우
-> 이 경우 만나는 지점이 없다. 0이다. (55line)
6. A와 B 사이의 거리가 r1+r2보다 작은 경우는 다음의 경우들이 있다. (56line 이후)
-> 2개
-> 0개
-> 1개
'PS > BOJ' 카테고리의 다른 글
[자바] 백준 3174 - 나누기 (java) (0) | 2023.06.28 |
---|---|
[자바] 백준 9202 - Boggle (java) (0) | 2023.06.27 |
[자바] 백준 12893 - 적의 적 (java) (0) | 2023.06.18 |
[자바] 백준 27988 - 리본 (Hard) (java) (0) | 2023.06.16 |
[자바] 백준 1083 - 소트 (java) (0) | 2023.06.14 |
댓글