PS

BOJ 12934 : 턴 게임

lickelon 2024. 3. 31. 23:22
  • 문제 링크 : 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부터 시작하여 가능한 큰 수부터 점수에 포함하는 게 최적의 해이다.

'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