본문 바로가기
프로그래머스/Lv.0

프로그래머스 > 코딩테스트 입문 > 공 던지기 - JAVA

by 아찌방 2022. 12. 23.

 

문제

문제 설명

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

 

제한사항

제한사항

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

 

입출력 예

입출력 예

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번에게 공을 던집니다.

 

코드

class Solution {
    public int solution(int[] numbers, int k) {
        return numbers[((k-1)*2)%numbers.length];
    }
}

 

풀이

 

 

예 #2

1. 1번은 첫 번째로 3번에게 공을 던집니다.

2. 3번은 두 번째로 5번에게 공을 던집니다.

3. 5번은 세 번째로 1번에게 공을 던집니다.

4. 1번은 네 번째로 3번에게 공을 던집니다.

 5. 3번은 다섯 번째로 5번에게 공을 던집니다.

 

 

 

자! 그러면 차근차근 풀어봅시다.

1. 공은 한명을 넘겨서 던져집니다.

그러면 던진 길이는 k의 2배 이겠죠?

 

2. 근데 우리는 던진 친구를 찾아야 합니다.

던진 친구의 위치 = ( k * 2) - 2

                              = ( k - 1) * 2  

( k - 1 ) * 2에 위치하는 친구를 찾으면 됩니다.

 

3. 근데 ( k - 1 ) * 2가 배열(numbers)의 길이를 넘을 수도 있기때문에

( k + 1 ) * 2 을 배열(numbers)의 길이(numbers.length)로 나눈 나머지 값을 구합니다.

					((k-1)*2)%number.length

 

이렇게 하면 k 번째 공을 던진 친구를 찾을 수 있게 됩니다!!!

 

다음에 또 봐요

 

728x90