공던지기

민태영·2023년 6월 8일
0

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

나의 풀이

function solution(numbers, k) {
    const members = numbers;
    let answer = 0;
    let cnt = 0;
    let idx = 0;
    
    // cnt가 k와 같아질때 까지 while문을 돌린다. 
    while(cnt !== k) {
        // while의 조건이 성립이 안되면 k만큼 돌린 members의 값이 answer에 할당된다.
        answer = members[idx]
        // idx를 2씩 올려준다.
        idx += 2;
        // idx가 members의 길이보다 같거나 커질때 
        // idx에서 memebers의 길이를 빼준 값을 다시 idx에 재할당한다.
        if(idx >= members.length) {
            idx = idx - members.length;
        }
        cnt++
    }
    return answer
}

남의 풀이

function solution(numbers, k) {
    let idx = 0
    // for문을 k보다 작게 돌려준다. 
    for(let i = 1; i < k; i++){
    // idx를 2씩 증가시킨다.
        idx += 2;
        // 만약 numbers의 length보다 idx가 더 크다면 
        if(idx > numbers.length){
        // numbers의 길이로 idx를 나눈 나머지값을idx에 재할당하여 반복작업한다.
            idx %= numbers.length
        }
    }
    return numbers[idx];
}
profile
꿈을 꾸는 개발자

0개의 댓글