프로그래머스
프로그래머스 공 던지기 문제풀이
애용이랑떼껄룩
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을 해주면 던질 순서의 숫자가 나온다.
태클은 환영!
반응형