/ PROGRAMING, PYTHON

공던지기

공던지기 문제

프로그래머스-공던지기

문제

  1. 배열 arr와 공던지는 횟수인 k개가 주어집니다.
  2. 배열의 인덱스 0 -> 2 -> 4 이런식으로 2칸씩 이동합니다.
  3. 단, 배열의 크기 n 을 넘으로 그만큼 0 인덱스에서 다시 시작합니다.

출력
마지막 공을 던지는 인덱스

해결 알고리즘

  1. 마지막 공을 던지는 인덱스 이므로 k-1 번 반복합니다.
  2. 배열의 2칸씩 이동하므로 기존 인덱스에 +2를 해줍니다.
  3. 배열의 크기를 넘으면 안 되므로 (인덱스 값 % n)을 통해 조절해줍니다.

해당 코드를 작성하면

def solution(numbers, k):
    answer = 0
    n = len(numbers)
    for i in range(k-1):
        answer = (answer+2) % n 
    return numbers[answer]

위와 같이 작성할 수 있습니다.

더 간략하게 알고리즘을 작성해봅니다.

  1. 2칸씩 (k-1)번 움직이는 것이므로 총 2*(k-1) 만큼 움직인다.
  2. 총 이동 인덱스를 n으로 나머지를 구해줍니다.
def solution(number, k):
    return number[ (2 * (k-1)) % len(number)]