Q. 정수 배열 array와 정수 n이 매개변수로 주어질 때, array에 들어있는 정수 중 n과 가장 가까운 수를 return 하도록 solution 함수를 완성해주세요.
function solution(array, n) {
array.sort((a,b) => a - b);
let Sm = array.map((el) => Math.abs((el) - n));
return array[Sm.indexOf(Math.min(...Sm))];
}
- 1단계. 파라미터로 주어진 n을 array의 전 요소들에 빼준 값의 절대값이 제일 작은 것이 n과 가장 가까운 수가 된다는 메커니즘을 파악한다.
- 2단계. 그 전에, 조건으로 가까운 수가 2개 이상일 경우, 더 작은 값을 반환하라는 조건이 있음을 파악한다.
- 3단계. 배열의 초기 요소들은 순서대로 있지 않기 때문에 sort를 사용하여 오름차순으로 바꿔주면, 가까운 수가 아무리 많아도 가장 작은 값을 반환한다는 것을 파악한다.
- 4단계. map을 이용하여 배열의 모든 요소에 n을 빼고 절대값을 씌우며, 이를 새로운 변수 Sm에 부여한다.
- 5단계. 배열인 Sm에 전개구문과 min을 사용하여 가장 가까운 값을 찾고, indexOf를 활용하여 그 수의 인덱스를 파악한다.
- 6단계. 파라미터 배열의 해당 인덱스가 n과 가장 가까운 작은 수이다.
Q. 머쓱이는 친구들과 369게임을 하고 있습니다. 369게임은 1부터 숫자를 하나씩 대며 3, 6, 9가 들어가는 숫자는 숫자 대신 3, 6, 9의 개수만큼 박수를 치는 게임입니다. 머쓱이가 말해야하는 숫자 order가 매개변수로 주어질 때, 머쓱이가 쳐야할 박수 횟수를 return 하도록 solution 함수를 완성해보세요.
function solution(order) {
let answer = 0;
let Turn = [...order + ""];
for (let i =0 ; i <= Turn.length - 1; i++) {
if (Turn[i] === "3" || Turn[i] === "6" || Turn[i] === "9"){
answer += 1;
}
}
return answer;
}
- 1단계. 본 문제는 3,6,9를 찾는 3개의 조건식으로 풀어야 한다는 것을 파악한다.
- 2단계. 여러 방법이 있지만, 우선 풀 수 있는 반복문과 조건문을 사용하기로 결정했다.
- 3단계. 파라미터의 매개 변수는 숫자열이기에 다양한 메서드를 사용하는데 제약이 있어, 이를 문자열로 만들고 전개구문으로 낱개의 문자열로 전개한다.
- 4단계. 해당 문자열을 새로운 변수에 선언하고, 3,6,9인 요소를 찾는 반복문을 작성한다.