inblog logo
|
stupefyee
    알고리즘문제풀기

    [JAVA 문제 풀이] 30. 공 던지기 (120843)

    Stupefyee's avatar
    Stupefyee
    Nov 22, 2024
    [JAVA 문제 풀이] 30. 공 던지기 (120843)
    Contents
    내가 작성한 코드다른 사람의 코드
    notion image
    notion image

    내가 작성한 코드

    💡
    class Solution { public int solution(int[] numbers, int k) { int n = numbers.length; // 친구들의 총 인원 수 int index = 0; // 공을 던질 사람의 초기 위치 // k번째로 던질 때까지 반복 rlfdl6 k 3 for (int i = 0; i < k - 1; i++) { index = (index + 2) % n; // 한 명 건너뛰고 다음 사람 } return numbers[index]; } }

    다른 사람의 코드

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

    동작 원리

    1. numbers가 1~n 까지로 세팅되서 numbers[n]으로 접근 하지 않아도 됨
     
    1. (k-1)
        • k-1은 첫 번째 사람을 기준으로 공을 던진 횟수를 표현합니다.
        • 예를 들어, 3번째로 공을 던지는 경우, 공은 실제로 2번 던져졌으므로 k-1을 사용합니다.
    1. (k-1) * 2
        • 한 번 공을 던질 때마다 한 명을 건너뛰므로, 실제로 이동하는 거리는 던진 횟수에 2를 곱한 값입니다.
    1. % numbers.length
        • 배열의 길이만큼 순환해야 하므로, numbers.length로 나머지를 계산하여 인덱스를 순환시킵니다.
    1. +1
        • 배열의 번호가 1부터 시작한다고 했으므로, 결과값에 +1을 추가하여 1 기반 번호를 반환합니다.
    Share article
    Contents
    내가 작성한 코드다른 사람의 코드

    stupefyee

    RSS·Powered by Inblog