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()