※ 글쓴이는 취미로 코딩을 익혀보는 사람이라 정확하지 않은 내용을 담고 있을 수 있다 ※

 

이번에 볼 문제는 백준 25592번 문제인 바둑돌 게임이다.
문제는 아래 링크를 확인하자.

https://www.acmicpc.net/problem/25592 

 

25592번: 바둑돌 게임

첫 번째 줄에 바둑돌 무더기에 있는 바둑돌의 개수를 의미하는 정수 $N$ $(1 \leq N \leq 100\,000)$이 입력된다.

www.acmicpc.net

직접 게임의 상황을 시뮬레이션을 돌려 문제를 해결해보자.

 

매 차례마다 들고 가는 바둑돌의 개수가 1씩 증가하므로, 각 차례마다 들고가는 바둑돌의 개수를 나타내는 변수 cnt를 만들어 루프를 한번 돌 때마다 1씩 증가하게 구현하는 것으로 문제를 편하게 해결할 수 있다.

 

이번 차례에 들고가야 하는 바둑돌의 개수가 홀수인지 짝수인지를 이용하면 이번 차례가 푸앙이의 차례인지 여부를 쉽게 계산해낼 수 있다.

 

아래는 제출한 소스코드이다.

#include <iostream>
using namespace std;

int main() {
	ios::sync_with_stdio(0);
	cin.tie(0);

	int cnt = 1;
	int N; cin >> N;
	while (N >= cnt) {
		N -= cnt;
		cnt++;
	}

	if (cnt & 1) cout << cnt - N;
	else cout << 0;
}
728x90

+ Recent posts