Post

[Programmers] #120843 - 공 던지기 [Java][C++][Python]

원형으로 선 사람들이 두 칸씩 건너뛰며 던질 때 k번째로 공을 던지는 사람을 구하는 워밍업 문제.

[Programmers] #120843 - 공 던지기 [Java][C++][Python]

문제 링크


1. 아이디어

한 명을 건너뛰고 던지므로 공은 매번 오른쪽으로 두 칸씩 이동한다. 첫 번째로 던지는 사람이 배열의 0번 인덱스이니, k번째로 던지는 사람은 두 칸씩 k - 1번 이동한 2 * (k - 1)번 인덱스에 있다.

원형으로 이어져 있으므로 이 값을 numbers의 길이로 나눈 나머지가 실제 인덱스이고, 그 자리의 값을 반환하면 된다.


2. 복잡도

접근시간공간
풀이$O(1)$$O(1)$

3. 코드

풀이 [Java][C++][Python]

1
2
3
4
5
class Solution {
    public int solution(int[] numbers, int k) {
        return numbers[2 * (k - 1) % numbers.length];
    }
}
1
2
3
4
5
6
#include <bits/stdc++.h>
using namespace std;

int solution(vector<int> numbers, int k) {
    return numbers[2 * (k - 1) % numbers.size()];
}
1
2
def solution(numbers, k):
    return numbers[2 * (k - 1) % len(numbers)]

This post is licensed under CC BY 4.0 by the author.