본문 바로가기

728x90
반응형
SMALL

게임 이론

(4)
백준 16884번 [나이트 게임](C++) -yes6686- 티스토리 백준 문제 풀이: 16884 [나이트 게임]문제 링크: https://www.acmicpc.net/problem/16884문제 설명:나이트 게임은 체스판에서 두 플레이어가 번갈아가며 나이트를 배치하는 게임입니다. 한 번 배치된 나이트는 특정 규칙에 따라 공격 가능한 위치를 점유하며, 배치할 수 없는 상태가 되면 패배합니다. 이 문제의 핵심은 점대칭 개념을 활용하여 최적의 게임 전략을 계산하는 것입니다.점대칭 개념:점대칭은 도형을 한 점을 중심으로 180° 회전했을 때 본래 도형과 일치하는 대칭입니다.체스판의 크기가 짝수일 경우, 상대가 놓은 나이트의 점대칭 위치에 나이트를 배치하면 후공이 항상 유리합니다.체스판의 크기가 홀수일 경우, 선공이 중앙 지점에 나이트를 배치하여 유리한 게임을 이끌어 갈 수 있습..
백준 20004번 [베스킨라빈스 31](C++) -yes6686- 티스토리 백준 문제 풀이: 20004 (베스킨라빈스 31)문제 링크: https://www.acmicpc.net/problem/20004문제 설명:베스킨라빈스 31 게임에서 **n명의 참가자** 중에서 어떤 번호를 가진 참가자가 승리할 수 있는지 찾는 문제입니다. 각 참가자는 자신의 순서에 숫자를 1 이상 **i 이하**의 범위에서 부를 수 있습니다. 목표는 **31**이 되는 숫자를 부르는 것을 피하는 것입니다. 승리할 수 있는 참가자의 번호를 모두 출력해야 합니다.문제 해결 코드#include using namespace std;int dp[32][32]; // dp[i][j]: i명 게임 시 j번째 숫자에서의 승패 상태 저장int main() { ios::sync_with_stdio(false); ..
백준 9655번 [돌 게임](C++) -yes6686- 티스토리 백준 문제 풀이: 9655 (돌 게임)문제 링크: https://www.acmicpc.net/problem/9655문제 설명:돌 게임은 돌을 1개 또는 3개 가져갈 수 있는 게임입니다. 두 사람이 번갈아가며 게임을 진행하며, 마지막 돌을 가져가는 사람이 승리합니다. 주어진 돌의 개수 n에 대해, 시작하는 사람이 이길 수 있는지 확인하여 이긴 사람을 출력합니다. - "SK"는 상근이가 승리, "CY"는 창영이가 승리입니다.문제 해결 코드#include using namespace std;int dp[1001]; // dp[i]: 돌이 i개 남았을 때 이긴 사람 (1: SK, 2: CY)int main() { int n; cin >> n; dp[1] = 1; // 돌 1개: SK 승리 ..
백준 9657번 [돌 게임 3](C++) -yes6686- 티스토리 백준 문제 풀이: 9657 (돌 게임 3)문제 링크: https://www.acmicpc.net/problem/9657문제 설명:돌 게임 3은 상근이와 창영이가 번갈아가며 게임을 진행하는 게임입니다. 한 번의 턴에서 돌을 1개, 3개, 혹은 4개 가져갈 수 있습니다. 마지막 돌을 가져가는 사람이 승리하며, 시작하는 사람이 이길 수 있는지 확인합니다. - "SK"는 상근이가 승리, "CY"는 창영이가 승리입니다.문제 해결 코드#include using namespace std;int dp[1001]; // dp[i]: 돌이 i개 남았을 때 승리하는 사람 (1: SK, 2: CY)int main() { ios::sync_with_stdio(false); cin.tie(NULL); int n;..

728x90
반응형
LIST