본문 바로가기
PS/BOJ

백준 1002 자바 - 터렛 (BOJ 1002 JAVA)

by Nahwasa 2023. 6. 22.

문제 : 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개

 

댓글