목차

Fruit Game

ps
링크acmicpc.net/…
출처BOJ
문제 번호19406
문제명Fruit Game
레벨골드 1
분류

게임이론

시간복잡도O(n)
인풋사이즈n<=10^6
사용한 언어Python 3.11
제출기록40888KB / 188ms
최고기록188ms
해결날짜2023/12/12

풀이

코드

"""Solution code for "BOJ 19406. Fruit Game".

- Problem link: https://www.acmicpc.net/problem/19406
- Solution link: http://www.teferi.net/ps/problems/boj/19406

Tags: [game theory]
"""

import sys


def main():
    t = int(sys.stdin.readline())
    for _ in range(t):
        fruits = sys.stdin.readline().rstrip()
        if 'A' not in (fruits[0], fruits[-1]):
            print('Apfelmann')
            continue
        elif 'B' not in (fruits[0], fruits[-1]):
            print('Bananenfrau')
            continue

        left, right = fruits.split('C')
        left, right = list(left), list(reversed(right))
        fruits_a, fruits_b = (left, right) if left[0] == 'A' else (right, left)
        while True:
            if fruits_a[-1] == 'A':
                fruits_a.pop()
                if not fruits_a:
                    print('Apfelmann')
                    break
            elif fruits_b[-1] == 'A':
                fruits_b.pop()

            if fruits_b[-1] == 'B':
                fruits_b.pop()
                if not fruits_b:
                    print('Bananenfrau')
                    break
            elif fruits_a[-1] == 'B':
                fruits_a.pop()


if __name__ == '__main__':
    main()