[SW Expert Academy, SWEA 14692] 통나무 자르기 (python)
Problem Solving/SWEA

[SW Expert Academy, SWEA 14692] 통나무 자르기 (python)

728x90

https://swexpertacademy.com/main/code/problem/problemDetail.do?problemLevel=3&contestProbId=AYJW0g-qlO8DFASv&categoryId=AYJW0g-qlO8DFASv&categoryType=CODE&problemTitle=&orderBy=FIRST_REG_DATETIME&selectCodeLang=ALL&select-1=3&pageSize=10&pageIndex=1

 

SW Expert Academy

SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!

swexpertacademy.com


※ SW expert 아카데미의 문제를 무단 복제하는 것을 금지합니다.

728x90

내 생각

문제를 이해할 때 헷갈릴 수도 있는데

통나무의 길이가 50일 때, Alice가 먼저 30을 잘라낸다면 남는 통나무의 길이가 20이 되고 Bob이 이 20 중에서 자르는 것이 아니다.

Alice가 30을 잘라내면 Bob은 30이나 20 중에서 한 조각을 두 조각으로 자를 수 있는 것이다.

만약 Bob이 30을 또 25 5로 잘랐다면, 다음으로 Alice가 자를 수 있는 조각들은 25, 20, 5 이렇게 세 조각이 되는 것이다.

 

모든 조각들의 길이가 1이 될 때까지 자를 수 있고, 모든 조각이 1이면 다음으로 자를 차례인 사람이 지는 것이다. (더 이상 자를 수 없으므로)

 

조각의 길이가 5이면 총 4번 자를 수 있고 Bob이 이기게 된다.

조각의 길이가 10이라면 총 9번 자를 수 있고 Alice가 이기게 된다.

 

따라서 처음 주어진 통나무의 길이가 짝수라면 Alice가 이기게 되고, 홀수라면 Bob이 이기게 된다.

# test case tc
tc = int(input())

for test_case in range(1, tc + 1):
	# 통나무 길이 n
    n = int(input())

    if n % 2 == 0:
        print("#{} Alice".format(test_case))
    else:
        print("#{} Bob".format(test_case))
728x90