공 던지기

Wook·2024년 9월 5일

🧩코딩테스트

목록 보기
26/46
post-thumbnail

문제

머쓱이는 친구들과 동그랗게 서서 공 던지기 게임을 하고 있습니다. 공은 1번부터 던지며 오른쪽으로 한 명을 건너뛰고 그다음 사람에게만 던질 수 있습니다. 친구들의 번호가 들어있는 정수 배열 numbers와 정수 K가 주어질 때, k번째로 공을 던지는 사람의 번호는 무엇인지 return 하도록 solution 함수를 완성해보세요.

조건

  • 2 < numbers의 길이 < 100
  • 0 < k < 1,000
  • numbers의 첫 번째와 마지막 번호는 실제로 바로 옆에 있습니다.
  • numbers는 1부터 시작하며 번호는 순서대로 올라갑니다.

예시

numberskresult
[1, 2, 3, 4]23
[1, 2, 3, 4, 5, 6]53
[1, 2, 3]32

풀이

  • 공이 1번부터 시작해서 한 명을 건너뛰고 이동함
  • 주어진 배열이 무한히 반복되는 배열이라고 생각하면 공을 던지는 사람들은 2의 배수인 index에 위치한다고 볼 수 있음
// {1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3, ...}
//  0  1  2  3  4  5  6  7  8  9  10 ...
  • k번째로 공을 던지는 사람은 2*(k-1)번 index
  • 하지만 실제로 주어진 배열은 길이가 정해져있으므로 구한 index를 배열의 길이로 나눈 뒤, 나머지 값을 index로 사용하여 답을 구하면 됨

코드

class Solution {
    public int solution(int[] numbers, int k) {
        int i = 2 * (k - 1);
        int j = i % numbers.length;
        
        return numbers[j];
    }
}
profile
Keep going

0개의 댓글