- Frederick Philips Brooks
Mythical Man-Month 저자
공 던지기
문제
머쓱이는 친구들과 동그랗게 서서 공 던지기 게임을 하고 있습니다. 공은 1번부터 던지며 오른쪽으로 한 명을 건너뛰고 그다음 사람에게만 던질 수 있습니다. 친구들의 번호가 들어있는 정수 배열 numbers와 정수 K가 주어질 때, k번째로 공을 던지는 사람의 번호는 무엇인지 return 하도록 solution 함수를 완성해보세요.
정답풀이
function solution(numbers, k) {
let ansIndex = 0;
for(let i = 0; i < k; i++){
ansIndex += 2;
if(ansIndex > numbers.length){
ansIndex -= numbers.length;
}
}
return numbers[ansIndex - 2];
}
ansIndex 변수를 0으로 초기화합니다.
반복문을 사용하여 k번 만큼 반복합니다. (0부터 k-1까지 반복)
ansIndex 변수에 2를 더합니다. (2씩 증가)
만약 ansIndex가 numbers 배열의 길이를 초과하면, ansIndex에서 numbers 배열의 길이를 빼줍니다. (인덱스를 순환하도록 합니다)
반복문이 모두 실행되면, numbers[ansIndex - 2]를 반환합니다. 이는 ansIndex에서 2를 뺀 인덱스에 해당하는 숫자를 의미합니다.
가까운 수
문제
정수 배열 array와 정수 n이 매개변수로 주어질 때, array에 들어있는 정수 중 n과 가장 가까운 수를 return 하도록 solution 함수를 완성해주세요.
문제풀이
function solution(array, n) {
let ans = [];
array.forEach((item) => {
ans.push(Math.abs(item - n));
})
const min = Math.min(...ans);
let check = [];
for(let index = 0; index < ans.length; index++){
if(ans[index] === min){
check.push(array[index]);
}
}
return Math.min(...check);
}
배열 ans를 초기화합니다. 이 배열은 array의 각 요소와 n 사이의 절대 차이를 저장합니다.
forEach 루프는 array의 각 요소를 순회하며 해당 요소와 n 사이의 절대 차이를 계산합니다. 그 결과는 ans 배열에 추가됩니다.이 코드는 주어진 array에서 n에 가장 가까운 값을 찾아 반환합니다. 절대 차이의 최솟값을 찾고, 해당 최솟값과 동일한 값을 가지는 array의 요소를 모두 check 배열에 추가합니다. 마지막으로, check 배열의 최솟값을 반환합니다.
k의 개수
문제
1부터 13까지의 수에서, 1은 1, 10, 11, 12, 13 이렇게 총 6번 등장합니다. 정수 i, j, k가 매개변수로 주어질 때, i부터 j까지 k가 몇 번 등장하는지 return 하도록 solution 함수를 완성해주세요.
정답풀이
function solution(i, j, k) {
let a ='';
for(i; i<=j; i++){a += i}
return a.split(k).length-1;
}
빈 문자열 a를 초기화합니다.
i부터 j까지의 범위에 있는 숫자들을 a 문자열에 연결합니다. 이는 반복문을 사용하여 i부터 j까지의 숫자를 문자열로 변환하고, a 문자열에 이어붙이는 방식으로 이루어집니다.
a 문자열을 구분자 k를 기준으로 분할하고, 분할된 개수를 반환합니다. split() 메서드는 구분자를 기준으로 문자열을 분할한 후, 분할된 문자열의 배열을 반환합니다. split(k)는 k를 구분자로 사용하여 문자열 a를 분할한 후, 분할된 문자열의 배열을 반환합니다. 따라서 split(k).length-1은 구분자 k를 기준으로 분할된 개수를 나타냅니다.