[백준 29667] Ответный матч (C#, C++) - soo:bak
작성일 :
문제 링크
설명
두 경기의 합산 스코어와 원정 골이 모두 동점이 되어 승부차기로 갈 수 있는지 판정하는 문제입니다.
접근법
승부차기로 가려면 두 경기의 총합과 원정 골이 모두 동점이어야 합니다. 1차전 원정 골은 B팀이 넣은 골이고, 2차전 원정 골은 A팀이 넣은 골입니다.
A팀의 원정 골이 부족하면 2차전 남은 시간에 추가로 넣어야 하고, B팀도 마찬가지입니다. 추가로 넣어야 할 골이 음수가 되면 이미 초과한 것이므로 동점을 맞출 수 없습니다. 결국 1차전에서 B팀이 넣은 골이 2차전에서 A팀이 넣은 골 이상이고, 1차전에서 A팀이 넣은 골이 2차전에서 B팀이 넣은 골 이상이면 가능합니다.
Code
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
using System;
class Program {
static void Main() {
var s1 = Console.ReadLine()!.Split(':');
var s2 = Console.ReadLine()!.Split(':');
var a = int.Parse(s1[0]);
var b = int.Parse(s1[1]);
var c = int.Parse(s2[0]);
var d = int.Parse(s2[1]);
var ok = b >= d && a >= c;
Console.WriteLine(ok ? "YES" : "NO");
}
}
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#include <bits/stdc++.h>
using namespace std;
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
string s1, s2; cin >> s1 >> s2;
auto parse = [](const string& s, int &x, int &y) {
int p = s.find(':');
x = stoi(s.substr(0, p));
y = stoi(s.substr(p + 1));
};
int a, b, c, d;
parse(s1, a, b);
parse(s2, c, d);
bool ok = b >= d && a >= c;
cout << (ok ? "YES" : "NO") << "\n";
return 0;
}