작성일 :

문제 링크

3622번 - 어떤 호박의 할로윈 여행

설명

두 개의 고리를 하나의 원판에서 잘라낼 수 있는지 판단하는 문제입니다.


접근법

각 고리의 외반지름이 원판 반지름을 넘으면 불가능합니다.

이후 두 고리를 나란히 배치할 수 있으면 가능하므로 두 외반지름의 합이 원판 반지름 이하인지 확인합니다.

그렇지 않다면 한 고리를 다른 고리의 구멍에 넣을 수 있는지 확인합니다. 한 고리의 외반지름이 다른 고리의 내반지름 이하이면 가능합니다.


Code

C#

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
using System;

class Program {
  static void Main() {
    var parts = Console.ReadLine()!.Split();
    var A = int.Parse(parts[0]);
    var a = int.Parse(parts[1]);
    var B = int.Parse(parts[2]);
    var b = int.Parse(parts[3]);
    var P = int.Parse(parts[4]);

    if (A > P || B > P) {
      Console.WriteLine("No");
      return;
    }

    if (A + B <= P || A <= b || B <= a) Console.WriteLine("Yes");
    else Console.WriteLine("No");
  }
}

C++

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <bits/stdc++.h>
using namespace std;

int main() {
  ios::sync_with_stdio(false);
  cin.tie(nullptr);

  int A, a, B, b, P; cin >> A >> a >> B >> b >> P;

  if (A > P || B > P) {
    cout << "No\n";
    return 0;
  }

  if (A + B <= P || A <= b || B <= a) cout << "Yes\n";
  else cout << "No\n";

  return 0;
}