๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
โœจ Algorithm

[๋ฐฑ์ค€/C++] 1002๋ฒˆ : ํ„ฐ๋ ›(๋‘ ์›์˜ ๊ต์ ์˜

by nitronium102 2021. 8. 14.

๋ฌธ์ œ

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

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

์ž…๋ ฅ

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

ํ•œ ์ค„์— x1, y1, r1, x2, y2, r2๊ฐ€ ์ฃผ์–ด์ง„๋‹ค. x1, y1, x2, y2๋Š” -10,000๋ณด๋‹ค ํฌ๊ฑฐ๋‚˜ ๊ฐ™๊ณ , 10,000๋ณด๋‹ค ์ž‘๊ฑฐ๋‚˜ ๊ฐ™์€ ์ •์ˆ˜์ด๊ณ , r1, r2๋Š” 10,000๋ณด๋‹ค ์ž‘๊ฑฐ๋‚˜ ๊ฐ™์€ ์ž์—ฐ์ˆ˜์ด๋‹ค.

์ถœ๋ ฅ

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

ํ’€์ด

์›์˜ ์œ„์น˜ ๊ด€๊ณ„๋ฅผ ์ด์šฉํ•˜๋Š” ๋ฌธ์ œ์ด๋‹ค. ๊ฐ ์›์˜ ์ค‘์‹ฌ ๊ฐ„์˜ ๊ฑฐ๋ฆฌ๋ฅผ D๋ผ๊ณ  ํ•˜๊ณ , ํฐ ์›์˜ ๋ฐ˜์ง€๋ฆ„์„ R, ์ž‘์€ ์›์˜ ๋ฐ˜์ง€๋ฆ„์„ r์ด๋ผ๊ณ  ํ•  ๋•Œ, 

01. ๊ต์ ์ด ๋ฌดํ•œ๋Œ€์ธ ๊ฒฝ์šฐ(๋™์ผํ•œ ์›์ผ ๊ฒฝ์šฐ)

์ค‘์‹ฌ ๊ฐ„์˜ ๊ฑฐ๋ฆฌ๊ฐ€ 0์ด๊ณ  ๋ฐ˜์ง€๋ฆ„์ด ๋™์ผ(D==0, R==r)

02. ๊ต์ ์ด 2๊ฐœ

03. ๊ต์ ์ด 1๊ฐœ

๋‚ด์ ‘์›, ์™ธ์ ‘์› ์ด 2๊ฐ€์ง€์˜ ๊ฒฝ์šฐ๊ฐ€ ์žˆ๋‹ค.

04. ๊ต์ ์ด 0๊ฐœ

์ด ์™ธ์˜ ๊ฒฝ์šฐ๊ฐ€ ์—ฌ๊ธฐ์— ํ•ด๋‹นํ•œ๋‹ค. ๊ณต์‹์€ ์žˆ์œผ๋‚˜ ๊ทธ๋ƒฅ else๋กœ ์ฒ˜๋ฆฌํ•ด์ฃผ๋Š” ๊ฒŒ ํŽธํ•˜๋‹ค.


#include <iostream>
#include <algorithm> // swap
#include <cmath> // sqrt, pow
using namespace std;

int main() {
  int T, x1, y1, r1, x2, y2, r2;
  cin >> T;
  for (int i=0; i<T; i++){
    cin >> x1 >> y1 >> r1 >> x2 >> y2 >> r2;
    if (r2 > r1){ // ํ•ญ์ƒ r1์ด r2๋ณด๋‹ค ํฌ๋„๋ก
      swap(r1, r2);
    }
    double distance = sqrt(pow(x1-x2,2) + pow(y1-y2, 2));
    // 00. ๊ต์  ๋ฌดํ•œ๊ฐœ(๋™์ผํ•œ ์›)
    if (distance == 0 && r1==r2)
      cout << -1;
    // 01. ๊ต์  2๊ฐœ( R-r < d < R+r )
    else if (distance < (r1+r2) && distance > (r1-r2))
      cout << 2;
    // 02. ๊ต์  1๊ฐœ(์™ธ์ ‘, ๋‚ด์ ‘)
    else if (distance == (r1+r2) || distance == (r1-r2))
      cout << 1;
    // 03. ๊ต์  0๊ฐœ
    else
      cout << 0;

    cout << "\n";
  }
}

 

๊ทธ๋ฆผ ์ถœ์ฒ˜ https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=junhyuk7272&logNo=221139170814 

 

6. ์›์˜ ์œ„์น˜๊ด€๊ณ„

<๊ต๊ณผ์„œ ์† ์ฐจ๋ก€ - ์ˆ˜ํ•™ 1> โ…ข ๋„ํ˜•์˜ ๋ฐฉ์ •์‹ ใ€€3. ์›์˜ ๋ฐฉ์ •์‹ 6. ์›์˜ ์œ„์น˜๊ด€๊ณ„ ใ€€(1) ์ง์„ ๊ณผ ์›์˜...

blog.naver.com

 

๋Œ“๊ธ€