๐Ÿ’  BOJ

[BOJ][C++] ๋ฐฑ์ค€ 1002๋ฒˆ: ํ„ฐ๋ ›

์„ ๋‹ฌ 2023. 10. 12. 17:05
๋ฐ˜์‘ํ˜•

https://www.acmicpc.net/problem/1002

 

1002๋ฒˆ: ํ„ฐ๋ ›

๊ฐ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค๋งˆ๋‹ค ๋ฅ˜์žฌ๋ช…์ด ์žˆ์„ ์ˆ˜ ์žˆ๋Š” ์œ„์น˜์˜ ์ˆ˜๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค. ๋งŒ์•ฝ ๋ฅ˜์žฌ๋ช…์ด ์žˆ์„ ์ˆ˜ ์žˆ๋Š” ์œ„์น˜์˜ ๊ฐœ์ˆ˜๊ฐ€ ๋ฌดํ•œ๋Œ€์ผ ๊ฒฝ์šฐ์—๋Š” $-1$ ์ถœ๋ ฅํ•œ๋‹ค.

www.acmicpc.net

 

๋ฌธ์ œ

์กฐ๊ทœํ˜„๊ณผ ๋ฐฑ์Šนํ™˜์€ ํ„ฐ๋ ›์— ๊ทผ๋ฌดํ•˜๋Š” ์ง์›์ด๋‹ค. ํ•˜์ง€๋งŒ ์›Œ๋‚™ ์กด์žฌ๊ฐ์ด ์—†์–ด์„œ ์ธ๊ตฌ์ˆ˜๋Š” ์ฐจ์ง€ํ•˜์ง€ ์•Š๋Š”๋‹ค. ๋‹ค์Œ์€ ์กฐ๊ทœํ˜„๊ณผ ๋ฐฑ์Šนํ™˜์˜ ์‚ฌ์ง„์ด๋‹ค.

์ด์„์›์€ ์กฐ๊ทœํ˜„๊ณผ ๋ฐฑ์Šนํ™˜์—๊ฒŒ ์ƒ๋Œ€ํŽธ ๋งˆ๋ฆฐ(๋ฅ˜์žฌ๋ช…)์˜ ์œ„์น˜๋ฅผ ๊ณ„์‚ฐํ•˜๋ผ๋Š” ๋ช…๋ น์„ ๋‚ด๋ ธ๋‹ค. ์กฐ๊ทœํ˜„๊ณผ ๋ฐฑ์Šนํ™˜์€ ๊ฐ๊ฐ ์ž์‹ ์˜ ํ„ฐ๋ › ์œ„์น˜์—์„œ ํ˜„์žฌ ์ ๊นŒ์ง€์˜ ๊ฑฐ๋ฆฌ๋ฅผ ๊ณ„์‚ฐํ–ˆ๋‹ค.

์กฐ๊ทœํ˜„์˜ ์ขŒํ‘œ์™€ ๋ฐฑ์Šนํ™˜์˜ ์ขŒํ‘œ๊ฐ€ ์ฃผ์–ด์ง€๊ณ , ์กฐ๊ทœํ˜„์ด ๊ณ„์‚ฐํ•œ ๋ฅ˜์žฌ๋ช…๊ณผ์˜ ๊ฑฐ๋ฆฌ๊ณผ ๋ฐฑ์Šนํ™˜์ด ๊ณ„์‚ฐํ•œ ๋ฅ˜์žฌ๋ช…๊ณผ์˜ ๊ฑฐ๋ฆฌ๊ฐ€ ์ฃผ์–ด์กŒ์„ ๋•Œ, ๋ฅ˜์žฌ๋ช…์ด ์žˆ์„ ์ˆ˜ ์žˆ๋Š” ์ขŒํ‘œ์˜ ์ˆ˜๋ฅผ ์ถœ๋ ฅํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜์‹œ์˜ค.

์ž…๋ ฅ

์ฒซ์งธ ์ค„์— ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค์˜ ๊ฐœ์ˆ˜๊ฐ€ ์ฃผ์–ด์ง„๋‹ค. ๊ฐ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ด๋ฃจ์–ด์ ธ ์žˆ๋‹ค.

ํ•œ ์ค„์— ๊ณต๋ฐฑ์œผ๋กœ ๊ตฌ๋ถ„ ๋œ ์—ฌ์„ฏ ์ •์ˆ˜๊ฐ€ ์ฃผ์–ด์ง„๋‹ค.

์ถœ๋ ฅ

๊ฐ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค๋งˆ๋‹ค ๋ฅ˜์žฌ๋ช…์ด ์žˆ์„ ์ˆ˜ ์žˆ๋Š” ์œ„์น˜์˜ ์ˆ˜๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค. ๋งŒ์•ฝ ๋ฅ˜์žฌ๋ช…์ด ์žˆ์„ ์ˆ˜ ์žˆ๋Š” ์œ„์น˜์˜ ๊ฐœ์ˆ˜๊ฐ€ ๋ฌดํ•œ๋Œ€์ผ ๊ฒฝ์šฐ์—๋Š” -1์„ ์ถœ๋ ฅํ•œ๋‹ค.

 

ํ’€์ด

๋‹น์—ฐํžˆ ๋ฅ˜์žฌ๋ช…์”จ์˜ ์œ„์น˜๊ฐ€ ์ •์ˆ˜๋ผ๊ณ  ์ƒ๊ฐํ•ด์„œ ๋ถ€๋ฅดํŠธํฌ์Šค๋กœ ์ •์ˆ˜ ์ขŒํ‘œ๋“ค์„ ๋‹ค ๊ฒ€์‚ฌํ–ˆ๋”๋‹ˆ 25%์—์„œ ํ‹€๋ ธ์Šต๋‹ˆ๋‹ค๊ฐ€ ๋–ด๋‹คใ…Ž..

์ •ํ™•ํžˆ๋Š” ๋‹ต์ด ๋ฌดํ•œ์ธ ๊ฒฝ์šฐ๋ฅผ ๊ฐ„๊ณผํ•˜๋ฉด 25%์—์„œ ํ‹€๋ ธ์Šต๋‹ˆ๋‹ค๊ฐ€ ๋œฌ๋‹ค.

๋ฅ˜์žฌ๋ช…์”จ๋Š” ์œ„์น˜๊ฐ€ ์ •์ˆ˜๊ฐ€ ์•„๋‹์ˆ˜๋„ ์žˆ์Œ์„ ๊ณ ๋ คํ•˜์ž !!

 

๊ณ ๋“ฑํ•™๊ต ์ˆ˜2 (์ด์ „ ๊ต์œก๊ณผ์ • ๋ฏธ์ ๋ถ„ ๋˜๋Š” ๊ทธ ์ „ ์ค‘ํ•™๊ต ๊ณผ์ •) ์–ด๋”˜๊ฐ€์—์„œ ๋‹ค๋ฃจ๋Š” '๋‘ ์›์˜ ์œ„์น˜๊ด€๊ณ„'๋ฅผ ์ด์šฉํ•ด์„œ ๊ตฌํ˜„๋งŒ ํ•˜๋ฉด ๋œ๋‹ค

 

#include <iostream>

using namespace std;

int t, x1,x2,y1,y2,r1,r2;

int distance(int x, int y, int a, int b) {
    return (x-a)*(x-a) + (y-b)*(y-b);
}

int solution() {
    int distance = (x1-x2)*(x1-x2) + (y1-y2)*(y1-y2);
    int rPlus = (r1+r2)*(r1+r2);
    int rMinus = (r1-r2)*(r1-r2);
    
    if(r1==r2 && distance==0) {
        return -1;
    }
    if(rMinus==distance || rPlus==distance) {
        return 1;
    }
    if(rMinus<distance && distance<rPlus) {
        return 2;
    }
    return 0;
}

int main() {
    cin >> t;
    while(t--) {
        cin >> x1 >> y1 >> r1 >> x2 >> y2 >> r2;
        cout << solution() << "\n";
    }
    return 0;
}

 

 

๋ฐ˜์‘ํ˜•