n개의 공이 있다고 가정합니다. 공은 1,2,3,4,...,n 방식으로 정렬됩니다. 이제 공은 순서가 반대로 되거나 n, n-1, n-2, ......, 2, 1 방식으로 정렬됩니다. 공은 다시 순서대로 반전되며 이번에는 위치 1에서 반전됩니다. n으로, 또는 이제 순서는 n, 1, 2,....., n-1이 됩니다. 이 반전 과정을 n번 반복하고 시작 위치를 오른쪽으로 1칸 이동할 때마다 반복합니다. 이제 역전 후 처음 '인덱스' 위치에 있는 공의 위치를 찾아야 합니다.
따라서 입력이 ball =5, index =2인 경우 출력은 4가 됩니다. 처음에 볼은 1, 2, 3, 4, 5입니다.
그런 다음
5,4,3,2,1 5,1,2,3,4 5,1,4,3,2 5,1,4,2,3
위치 2에 있는 공은 현재 위치 4에 있습니다.
이 문제를 해결하기 위해 다음 단계를 따릅니다. −
- 인덱스 <(balls / 2)의 하한값이면
- 2 * 인덱스 + 1을 반환
- 그렇지 않으면
- 2 반환 *(볼 - 인덱스 - 1)
예
이해를 돕기 위해 다음 구현을 살펴보겠습니다. −
def solve(balls, index): if index < balls // 2: return 2 * index + 1 else: return 2 * (balls - index - 1) print(solve(5, 2))
입력
5, 2
출력
4