[Programmers] #120843 - 공 던지기 [Java][C++][Python]
[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.