Dragonball Online Goku Hand
본문 바로가기
알고리즘 도장깨기

프로그래머스 Lv.1 "공 던지기"

by 별의 코비 2022. 11. 29.
728x90

🔥 Programmers Lv.1 : 공 던지기


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

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


👉🏻 My answer

function solution(numbers, k) {
    // 첫 번째 선수가 공을 갖고있음
    let ball = 1
    // 마지막 공을 던질 선수를 찾기위해 k-1 번까지 반복하며 다음 사람을 건너뛰도록 +2
    for(let i = 0 ; i < k-1 ; i ++) {
        ball+=2
        // 마지막 번호를 넘어가는 경우 처음 선수에게 공이 전달되도록 배열의 크기만큼 -
        if(ball > numbers.length-1) {
            ball-=numbers.length
        }
    }
    return ball
}
: 설명은 주석을 참고해주세요!


👉🏻 Another ways

function solution(numbers, k) {
    return numbers[(--k*2)%numbers.length];
}
: (--k*2)는 뭘까요...?그냥 k*2인걸까요...?

댓글