[백준 7597] Tennis (C#, C++) - soo:bak
작성일 :
문제 링크
설명
포인트 승자가 A 또는 B로 주어진 문자열을 따라가며 테니스 게임 스코어를 계산하는 문제입니다. 게임 승리 조건은 포인트 4 이상이면서 상대보다 2점 이상 앞설 때입니다.
접근법
먼저 각 플레이어의 현재 포인트와 게임 수를 0으로 초기화합니다.
다음으로 문자열을 순회하며 해당 플레이어의 포인트를 1 증가시킵니다. 업데이트 후 한 플레이어가 4점 이상이면서 상대보다 2점 이상 앞서면 게임 승리로 처리하고 포인트를 리셋합니다.
이후 한 줄 처리가 끝나면 각 플레이어의 게임 수를 출력합니다.
Code
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
25
26
27
using System;
class Program {
static void Main() {
string? line;
while ((line = Console.ReadLine()) != null) {
if (line == "#")
break;
int pa = 0, pb = 0, ga = 0, gb = 0;
foreach (var c in line) {
if (c == 'A') pa++;
else if (c == 'B') pb++;
if (pa >= 4 && pa - pb >= 2) {
ga++;
pa = pb = 0;
}
else if (pb >= 4 && pb - pa >= 2) {
gb++;
pa = pb = 0;
}
}
Console.WriteLine($"A {ga} B {gb}");
}
}
}
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
25
26
27
28
29
30
31
#include <bits/stdc++.h>
using namespace std;
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
string s;
while (cin >> s) {
if (s == "#")
break;
int pa = 0, pb = 0, ga = 0, gb = 0;
for (char c : s) {
if (c == 'A') pa++;
else if (c == 'B') pb++;
if (pa >= 4 && pa - pb >= 2) {
ga++;
pa = pb = 0;
}
else if (pb >= 4 && pb - pa >= 2) {
gb++;
pa = pb = 0;
}
}
cout << "A " << ga << " B " << gb << "\n";
}
return 0;
}