- 문제 링크 : boj.kr/12934
- 난이도 : G5
- 태그 : 그리디
12934번: 턴 게임
윤호가 1, 2, 4 턴을 이기고, 동혁이가 3, 5, 6 턴을 이겼다면 가능한 결과이다. 윤호의 승리 횟수가 최소가 되는 경우는 윤호가 1, 6 턴을 이기고, 동혁이가 2, 3, 4, 5를 이긴 것이다.
www.acmicpc.net
코드
#include <bits/stdc++.h>
#define all(x) (x).begin(), (x).end()
#define INF 0x7FFFFFFF
using namespace std;
using ll = long long;
using ld = long double;
using pii = pair<int,int>;
using pll = pair<ll, ll>;
int main()
{
ios::sync_with_stdio(0);
cin.tie(0); cout.tie(0);
ll x, y;
cin >> x >> y;
ll n = 0;
ll temp = x + y;
while(temp >= n) {
temp -= n;
n++;
}
if(temp != 0) {
cout << -1;
return 0;
}
n--;
ll ans = 0;
for(ll i = n; i > 0; i--) {
if(x >= i) {
x -= i;
ans++;
}
}
assert(x == 0);
cout << ans;
return 0;
}
풀이
두 점수의 합=(n+1)n/2를 만족하는 n을 구해 총 턴의 수는 쉽게 구할 수 있다.
n부터 시작하여 가능한 큰 수부터 점수에 포함하는 게 최적의 해이다.
728x90
'PS' 카테고리의 다른 글
BOJ 1461 : 도서관 (0) | 2024.04.02 |
---|---|
BOJ 12764 : 싸지방에 간 준하 (0) | 2024.04.01 |
BOJ 26524 : 방향 정하기 (0) | 2024.03.30 |
BOJ 12796 : 나의 행렬곱셈 답사기 (0) | 2024.03.29 |
BOJ 17298 : 오큰수 (0) | 2024.03.28 |