공던지기
공던지기 문제
문제
- 배열 arr와 공던지는 횟수인 k개가 주어집니다.
- 배열의 인덱스 0 -> 2 -> 4 이런식으로 2칸씩 이동합니다.
- 단, 배열의 크기 n 을 넘으로 그만큼 0 인덱스에서 다시 시작합니다.
출력
마지막 공을 던지는 인덱스
해결 알고리즘
- 마지막 공을 던지는 인덱스 이므로 k-1 번 반복합니다.
- 배열의 2칸씩 이동하므로 기존 인덱스에 +2를 해줍니다.
- 배열의 크기를 넘으면 안 되므로 (인덱스 값 % n)을 통해 조절해줍니다.
해당 코드를 작성하면
def solution(numbers, k):
answer = 0
n = len(numbers)
for i in range(k-1):
answer = (answer+2) % n
return numbers[answer]
위와 같이 작성할 수 있습니다.
더 간략하게 알고리즘을 작성해봅니다.
- 2칸씩 (k-1)번 움직이는 것이므로 총 2*(k-1) 만큼 움직인다.
- 총 이동 인덱스를 n으로 나머지를 구해줍니다.
def solution(number, k):
return number[ (2 * (k-1)) % len(number)]