import math
def solution(n, a, b, answer = 1):
answer += 1
a = math.ceil(a / 2)
b = math.ceil(b / 2)
if abs(a - b) == 1:
return answer
return solution(n, a, b, answer)
간과한점이 있었다. 예를들어서 [1,2], [3,4] 이렇게 떨어지는게 아니라 [2,3], [4,5]로 떨어져도 차수가 1이 나기 때문에 값이 처리가 되는데 이는 둘의 대결이 아니기 때문에 수정이 필요하다.
import math
def solution(n, a, b, answer = 1):
answer += 1
a = math.ceil(a / 2)
b = math.ceil(b / 2)
if (((a > b) and a % 2 == 0) or (a < b) and b % 2 == 0) and abs(a - b) == 1:
return answer
return solution(n, a, b, answer)
테스트 케이스에 예를들어서 n = 1, 이고 A = 1, B = 2, 일때 answer = 1과 같은 2명만 존재하면 한번에 끝나야 하는데 N/2를 해버리면 둘다 1, 1이 되버리면서 무한 루프에 빠져버리는 상황이 발생했다.
import math
def solution(n, a, b, answer = 0):
answer += 1
if (((a > b) and a % 2 == 0) or (a < b) and b % 2 == 0) and abs(a - b) == 1:
return answer
a = math.ceil(a / 2)
b = math.ceil(b / 2)
return solution(n, a, b, answer)
import math
def solution(n, a, b, answer = 0):
answer += 1
if max(a, b) % 2 == 0 and abs(a - b) == 1:
return answer
a = math.ceil(a / 2)
b = math.ceil(b / 2)
return solution(n, a, b, answer)