[백준 11970] Fence Painting (C#, C++) - soo:bak
작성일 :
문제 링크
설명
두 구간이 칠해졌을 때 칠해진 전체 길이를 구하는 문제입니다.
접근법
두 구간이 떨어져 있으면 각 구간 길이의 합을 구합니다.
두 구간이 겹치면 합집합의 길이를 구합니다.
겹침 여부는 한 구간의 끝이 다른 구간의 시작보다 작거나 같은지로 판단합니다.
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;
}