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

 

이번에 볼 문제는 백준 32908번 문제인 Programmers and Stones이다.
문제는 아래 링크를 확인하자.

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

 

자신의 차례에 홀수개의 돌이 포함된 돌무더기가 존재한다면 그러한 돌무더기에서 돌을 하나씩 제거하고 나머지 돌무더기에서는 돌을 제거하지 않아 모든 돌무더기에 각각 짝수개(0 포함)의 돌이 포함되게 만들 수 있다. 그리고 자신의 차례에 홀수개의 돌이 포함된 돌무더기가 존재하지 않는다면 남은 돌이 없거나 자신의 차례 후에 항상 홀수개의 돌이 포함된 돌무더기가 생기게 된다.

 

위의 관찰을 이용하면 초기 상태에 홀수개의 돌이 포함된 돌무더기의 존재 여부로 게임을 이기는 사람이 결정된다는 점을 관찰할 수 있다.

 

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

#include <iostream>
using namespace std;

int N;

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

	cin >> N;
	while (N--) {
		int x; cin >> x;
		if (x & 1) {
			cout << "Alice";
			return 0;
		}
	}
	cout << "Dmitry";
}
728x90

'BOJ' 카테고리의 다른 글

[BOJ 32661 // C++] Airfare Grants  (0) 2024.12.16
[BOJ 32936 // C++] 타임머신  (2) 2024.12.13
[BOJ 32904 // C++] Ordinal Number  (1) 2024.12.11
[BOJ 32871 // C++] 돌 게임 nm  (1) 2024.12.10
[BOJ 32902 // C++] Chips  (1) 2024.12.09

+ Recent posts