작성일 :

문제 링크

11970번 - Fence Painting

설명

두 구간이 칠해졌을 때 칠해진 전체 길이를 구하는 문제입니다.


접근법

두 구간이 떨어져 있으면 각 구간 길이의 합을 구합니다.

두 구간이 겹치면 합집합의 길이를 구합니다.

겹침 여부는 한 구간의 끝이 다른 구간의 시작보다 작거나 같은지로 판단합니다.



Code

C#

1
2
3
4
5
6
7
8
9
10
11
12
using System;

class Program {
  static void Main() {
    var p1 = Array.ConvertAll(Console.ReadLine()!.Split(), int.Parse);
    var p2 = Array.ConvertAll(Console.ReadLine()!.Split(), int.Parse);
    var a = p1[0]; var b = p1[1]; var c = p2[0]; var d = p2[1];

    var ans = (b <= c || d <= a) ? (b - a) + (d - c) : Math.Max(b, d) - Math.Min(a, c);
    Console.WriteLine(ans);
  }
}

C++

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

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

  int a, b, c, d;
  if (!(cin >> a >> b >> c >> d)) return 0;
  int ans = (b <= c || d <= a) ? (b - a) + (d - c) : max(b, d) - min(a, c);
  cout << ans << "\n";

  return 0;
}