PS/Baekjoon Online Judge

[백준 1002] 터렛 [C]

kimyoungrok 2022. 4. 3. 12:11

백준 - 1002
백준 - 1002


풀이

두 좌표를 기준으로 반지름만큼의 원이 형성될 때 원의 둘레가 겹치는 좌표의 개수를 구하면 된다.

 

아래의 그림은 주어진 Test Case에 대한 시각화 자료이다.

만약 입력으로 주어지는 두 원이, 동일한 좌표와 반지름을 가진다면 '류재명'이 있을 수 있는 위치는 무한대이다.

 

두 원의 정보에 대한 입력을 struct Circle을 통해 입력받고, 두 원의 중심거리(d)와 두 원의 반지름의 차(diff_radius), 두 원의 반지름의 합(sum_radius)을 구해서 다음과 같은 비교를 통해 문제를 해결할 수 있다.

 

  1. 입력받은 두 원의 정보가 동일하다면 류재명이 있을 수 있는 위치는 무한대이다.
  2. d == sum_radius 이거나, d == diff_radius(아래 그림 참고)이면 한 접점에서만 만난다.
  3. d < sum_radius 이고, diff_radius < d 이면 두 접점에서 만난다.
  4. 위의 조건이 성립하지 않으면 두 원의 접점은 없다.

d == diff_radius 인 경우


소스코드

소스코드 보기


출처

 

1002번: 터렛

각 테스트 케이스마다 류재명이 있을 수 있는 위치의 수를 출력한다. 만약 류재명이 있을 수 있는 위치의 개수가 무한대일 경우에는 -1을 출력한다.

www.acmicpc.net

'PS > Baekjoon Online Judge' 카테고리의 다른 글

[백준 1012] 유기농 배추 [Python]  (0) 2022.06.04
[백준 11050] 이항 계수 1 [C]  (0) 2022.04.03
[백준 2352] 반도체 설계 [C]  (0) 2021.09.05
[백준 10800] 컬러볼 [C]  (0) 2021.09.05
[백준 1377] 버블 소트 [C]  (0) 2021.09.05