algorithm - 베스킨라빈스 31 게임에서 반드시 이기는 방법

Jaden Lee·2025년 3월 12일

algorithm

목록 보기
2/8
post-thumbnail

베스킨라빈스 31 게임에서 반드시 이기는 방법

개요

베스킨라빈스 31 게임은 두 명이 번갈아 가며 숫자를 부르고, 31을 부르는 사람이 지는 게임입니다.
이 게임에서 반드시 이기는 전략이 존재합니다. 이 글에서는 그 알고리즘을 설명하고, Dart 언어로 이를 구현하는 방법을 소개합니다.


반드시 이기는 전략

핵심 원리: 4의 배수를 상대에게 넘겨라!

이 게임에서 승리하려면 4의 배수를 상대방에게 넘기는 것이 핵심입니다. 즉, 4, 8, 12, 16, 20, 24, 28을 상대가 말하도록 유도하면 됩니다.

전략적인 진행 방법

  1. 선공이라면?
    • 첫 번째로 "1"을 부른다.
  2. 이후, 상대가 어떤 숫자를 부르든 다음 4의 배수에 도달하도록 숫자를 부른다.

수식으로 표현하면:

우리가 항상 부르는 마지막 숫자를 ( x )라고 하면, 다음 목표 숫자는 다음과 같이 계산할 수 있습니다.

Next Target=(x4+1)×4\text{Next Target} = \left( \frac{x}{4} + 1 \right) \times 4

단, 이 값이 31을 초과하면 31을 선택해야 합니다.

예시:

  • 내가 "1"을 부름
  • 상대가 "2, 3"을 부름
  • 나는 "4"를 부름 (4의 배수!)
  • 상대가 "5, 6"을 부름
  • 나는 "7"을 부름 (다음 4의 배수는 8!)
  • 마지막에 상대방이 "28"을 부르도록 유도하면, 나는 "29, 30"을 부르고 상대에게 "31"을 강제할 수 있음.

후공이라면?

만약 상대가 먼저 "1"을 부르지 않고, 전략을 모른다면 4의 배수를 상대에게 넘기는 패턴을 유지하면 됩니다.

하지만 상대도 전략을 알고 있다면 후공은 반드시 질 수밖에 없습니다. 😭


Dart 코드 구현

이제 이 전략을 Dart 언어로 구현해보겠습니다.(요즘 공부하는 언어가 Dart라서...) 이 코드는 사용자가 입력한 숫자를 기준으로 자동으로 다음 최적의 숫자를 계산하여 출력하는 프로그램입니다.

import 'dart:io';

void main() {
  int currentNumber = 0;
  print("베스킨라빈스 31 게임을 시작합니다! 당신이 먼저 숫자를 입력하세요 (1~3개 입력 가능)");

  while (currentNumber < 31) {
    stdout.write("당신의 차례: ");
    String? input = stdin.readLineSync();
    if (input == null) continue;

    List<int> numbers = input.split(' ').map(int.parse).toList();
    if (numbers.isEmpty || numbers.first != currentNumber + 1 || numbers.length > 3) {
      print("잘못된 입력입니다. 올바른 숫자를 입력하세요.");
      continue;
    }

    currentNumber = numbers.last;
    if (currentNumber >= 31) {
      print("당신이 졌습니다! 😭");
      break;
    }

    // AI가 최적의 숫자 선택
    int nextTarget = ((currentNumber ~/ 4) + 1) * 4;
    nextTarget = nextTarget > 31 ? 31 : nextTarget;

    List<int> aiNumbers = [];
    for (int i = currentNumber + 1; i <= nextTarget; i++) {
      aiNumbers.add(i);
    }

    print("AI의 차례: ${aiNumbers.join(', ')}");
    currentNumber = aiNumbers.last;

    if (currentNumber >= 31) {
      print("AI가 이겼습니다! 🎉");
      break;
    }
  }
}

결론

베스킨라빈스 31 게임에서 반드시 이기는 전략은 4의 배수를 상대에게 넘기는 것입니다.
위의 Dart 코드로 이 전략을 직접 체험해볼 수 있으며, 친구들과 게임을 할 때 활용해 보세요! 🎮

이제 여러분도 베스킨라빈스 31 게임에서 무적이 될 수 있습니다! 🚀

0개의 댓글