[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.