요구능력 : 원의 성질에 대해 알고 있느냐
코드설명 :
원의 내접, 외접, 접하지않는것을 이용하여 조건을 만들었다.
변수 r의 경우 두 원의 거리를 구한것이다.(중심을 기준)
후기 : 솔직히 원의 성질알아도 처음 문제보고 딱 생각해내는 사람이 얼마나 있겟느냐마는...
원으로 접근하면 그닥 어려운 문제는 아닌것같다.
원으로 접근할 수 있는 근거를 들어보자면 각각 두개의 좌표와 반지름을 주고,
두 좌표에서 주어진 거리만큼 떨어져 있는 위치에 몇개가 있을 수 있는지를 찾아야된다는 것이다.
let T = Int(readLine()!)!
for _ in 1...T {
let arr = readLine()!.split(separator: " ").map{ Int($0)! }
var r1 = arr[2]
var r2 = arr[5]
let r = ((arr[0] - arr[3]) * (arr[0] - arr[3])) + ((arr[1] - arr[4]) * (arr[1] - arr[4]))
if r2 > r1 {
let temp = r1
r1 = r2
r2 = temp
}
if r1 == r2 && r == 0 {
print("-1")
}else if (r1 - r2) * (r1 - r2) > r || (r1 + r2) * (r1 + r2) < r {
print("0")
}else if (r1 + r2) * (r1 + r2) == r || r == (r1 - r2) * (r1 - r2) {
print("1")
}else {
print("2")
}
}
'Algorithm > 문제풀이_백준' 카테고리의 다른 글
Swift) 백준 2798번 (블랙잭) (0) | 2021.08.18 |
---|---|
Swift) 백준 11729번 (하노이 탑) (0) | 2021.08.17 |
Swift) 백준 3053번 (택시 기하학) (0) | 2021.08.15 |
Swift) 백준 4153번 (직각삼각형) (0) | 2021.08.15 |
Swift) 백준 3009번 (네 번째 점) (0) | 2021.08.15 |
댓글