인덱스가 0번 부터 시작하는 것을 생각하여 k에서 1을 빼주고 1씩 증가할 것을 생각하여 2를 곱해줬습니다.
그 값이 배열의 길이보다 클 수 있기 때문에 k에서 1을 빼고 2를 곱한 수에 numbers의 길이를 나눈 나머지가 마지막에 공이 있는 위치가 됩니다.
package com.namji.codingtest;
public class 공_던지기 {
public static void main(String[] args) {
/*
공 던지기 게임
정수 배열 numbers와 정수 k가 매개변수로 주어집니다.
공은 1번부터 던지며 오른쪽으로 한 명을 건너뛰고
그 다음 사람에게만 던질 수 있습니다.
매개변수를 이용하여 k번째로
공을 던지는 사람의 번호를 출력하는 문제입니다.
입출력 예
numbers k result
[1, 2, 3, 4] 2 3
[1, 2, 3, 4, 5, 6] 5 3
[1, 2, 3] 3 2
입출력 설명
#1
1번은 첫 번째로 3번에게 공을 던집니다.
3번은 두 번째로 1번에게 공을 던집니다.
#2
1번은 첫 번째로 3번에게 공을 던집니다.
3번은 두 번째로 5번에게 공을 던집니다.
5번은 세 번째로 1번에게 공을 던집니다.
1번은 네 번째로 3번에게 공을 던집니다.
3번은 다섯 번째로 5번에게 공을 던집니다.
#3
1번은 첫 번째로 3번에게 공을 던집니다.
3번은 두 번째로 2번에게 공을 던집니다.
2번은 세 번째로 1번에게 공을 던집니다.
*/
int[] numbers = {1, 2, 3, 4, 5, 6};
int k = 5;
int index = 0;
System.out.println(numbers[2 * (k - 1) % numbers.length]);
System.out.println(2 * (k - 1) % numbers.length + 1);
}
}
프로그래머스 코드
// class Solution {
// public int solution(int[] numbers, int k) {
// return numbers[2 * (k - 1) % numbers.length];
// }
// }
class Solution {
public int solution(int[] numbers, int k) {
return 2 * (k - 1) % numbers.length + 1;
}
}