프로그래머스

프로그래머스 공 던지기 문제풀이

애용이랑떼껄룩 2024. 2. 23. 09:21
728x90

문제 설명

머쓱이는 친구들과 동그랗게 서서 공 던지기 게임을 하고 있습니다. 공은 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

문제 풀이

public int solution(int[] numbers, int k) {
        int answer = 0;
        int index = 0;

        for(int i = 1; i<k; i++) {
            index += 2;
        }
        index %= numbers.length;
        answer = numbers[index];

        return answer;
    }

 

공을 한번 던질 때마다 배열요소의 +2가 되기 때문에  index + 2씩 반복문을 돌려준다.

i를 k보다 작게 하는 이유는 k번째에 던질 사람을 찾기 때문에 k와 같은 값으로 하면 k번째에 공을 받은 사람이 구해지게 됨.

index를 numbers길이로 나눈 값의 나머지를 구한 뒤 numbers순서에 index를 넣어 answer에 담아준다.

 

다른 풀이

public static int solution2(int[] numbers, int k) {
        return (k-1)*2 % numbers.length+1;
    }

 

(k-1)*2를 하면 위 풀이의 반복문과 같은 값이 나옴.

% numbers.length후 +1을 하는 이유는 배열에 들어있는 요소로 찾는 것이 아니고 배열의 요소는 1부터 시작하기 때문에

+1을 해주면 던질 순서의 숫자가 나온다.

 

태클은 환영!

반응형