본문 바로가기
Coding Test/Java Coding Test

[프로그래머스 / 자바] - 공 던지기

by nam_ji 2024. 7. 30.

공 던지기

문제

  • 공 던지기 게임
  • 정수 배열 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씩 증가하며 순서를 넘겨야 하고 배열 안에서 돌아야 하기 때문에
  • 인덱스가 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;
    }
}