[백준 34009] Bob부 멍충이 (C#, C++) - soo:bak
작성일 :
문제 링크
설명
수열을 적절히 섞을 수 있을 때 Alice가 항상 이길 수 있는지 판단해 승자를 출력하는 문제입니다.
접근법
먼저 수열 길이가 홀수면 첫 점수가 Bob에게 가므로 Alice가 즉시 앞설 수 없어 항상 Bob이 이깁니다.
다음으로 수열 길이가 짝수면 Alice가 먼저 점수를 얻습니다.
이후 큰 수부터 앞에 배치하면 각 쌍마다 Alice가 Bob보다 큰 값을 가져가므로 점수 차이가 계속 양수로 유지됩니다.
마지막으로 길이가 짝수면 Alice, 홀수면 Bob을 출력합니다.
Code
C#
1
2
3
4
5
6
7
8
9
10
11
12
using System;
class Program {
static void Main() {
var parts = Console.In.ReadToEnd().Split();
var idx = 0;
var n = int.Parse(parts[idx++]);
for (var i = 0; i < n; i++) idx++;
Console.WriteLine(n % 2 == 0 ? "Alice" : "Bob");
}
}
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <bits/stdc++.h>
using namespace std;
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
int n; cin >> n;
for (int i = 0; i < n; i++) {
int x; cin >> x;
}
cout << (n % 2 == 0 ? "Alice" : "Bob") << "\n";
return 0;
}