[백준 16088] Finding Your Coach (C#, C++) - soo:bak
작성일 :
문제 링크
설명
기차의 탑승과 관련된 시뮬레이션 문제입니다.
문제의 설명에 따르면, 기차의 객차 번호는 연속되는 양의 정수
로 이루어진다는 것만 알 수 있으며,
어느 방향
인지는 알 수가 없습니다.
따라서, 가능한 경우의 수에 Laurie 의 행동을 직접 시뮬레이션 한 후 출력합니다.
문제의 조건에 따르면, Laurie 가 가능한 행동은 다음과 같습니다.
- Laurie 가 현재 올바른 객차 앞에 서있다면,
G
를 출력합니다. - Laurie 의 객차가 반드시 주어진 객차의 왼쪽에 있는 것으로 판별된다면,
L
을 출력합니다. - Laurie 의 객차가 반드시 주어진 객차의 오른쪽에 있는 것으로 판별된다면,
R
을 출력합니다. - Laurie 의 객차에 대한 판단을 할 수 없는 경우,
E
를 출력합니다.
입력으로 주어지는 정보는 다음과 같습니다.
l
: Laurie 의 왼쪽에 있는 객차의 수r
: Laurie 의 오른쪽에 있는 객차의 수n
: Laurie 의 앞에 있는 객차의 번호m
: Laurie 가 찾고 있는 객차의 번호
입력으로 주어지는 정보를 바탕으로, Laurie 가 가능한 행동을 문제의 조건에 맞추어 출력합니다.
참고
cpp
와 다르게,C#
에서는 반복문 안에서 직접Console.Writeline()
메서드를 호출 시 시간 초과가됩니다.
따라서,System.Text
네임스페이스 안에 있는StringBuilder()
메서드를 통해 매 반복문마다 결과값만 계산한 후 출력을 준비하고,
모든 시뮬레이션이 종료된 뒤, 한 번에 출력을 하도록 구현하였습니다.
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
28
29
30
31
32
33
34
35
36
37
38
39
namespace Solution {
class Program {
static void Main(string[] args) {
var cntCase = int.Parse(Console.ReadLine()!);
var output = new System.Text.StringBuilder();
for (int i = 0; i < cntCase; i++) {
var input = Console.ReadLine()?.Split();
var l = int.Parse(input![0]);
var r = int.Parse(input![1]);
var n = int.Parse(input![2]);
var m = int.Parse(input![3]);
string ans = "";
if (n == m) ans = "G";
else {
int cntWay = 0;
if (Math.Abs(n - m) <= l) {
ans = "L";
cntWay++;
}
if (Math.Abs(n - m) <= r) {
ans = "R";
cntWay++;
}
bool enableToFigure = true;
if (cntWay > 1) enableToFigure = false;
if (!enableToFigure) ans = "E";
}
output.AppendLine(ans);
}
Console.Write(output);
}
}
}
[ 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
32
33
34
35
36
#include <bits/stdc++.h>
using namespace std;
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
int cntCase; cin >> cntCase;
while (cntCase--) {
int l, r, n, m; cin >> l >> r >> n >> m;
string ans = "";
if (n == m) ans = "G";
else {
int cntWay = 0;
if (abs(n - m) <= l) {
ans = "L";
cntWay++;
}
if (abs(n - m) <= r) {
ans = "R";
cntWay++;
}
bool enableToFigure = true;
if (cntWay > 1) enableToFigure = false;
if (!enableToFigure) ans = "E";
}
cout << ans << "\n";
}
return 0;
}