k의 개수
※풀이
1. Array(j-i+1)을 사용하여 길이가 j-i+1인 빈 배열을 생성합니다.
2 .fill(i)를 사용하여 빈 배열의 모든 요소를 i로 채웁니다.
3. map((v,index) => v + index)를 사용하여 각 요소에 인덱스를 더합니다. 이로써 배열은 [i, i+1, i+2, ..., j]의 숫자들을 가지게 됩니다.
4. join('')을 사용하여 배열의 요소들을 문자열로 결합합니다. 숫자들이 하나의 문자열로 이어집니다.
5. split(k)를 사용하여 문자열을 k를 기준으로 분리합니다. 이를 통해 k가 등장하는 부분들이 배열로 분리됩니다.
6. length - 1을 사용하여 분리된 배열의 길이에서 1을 뺍니다. 이는 k가 등장한 횟수를 나타냅니다. 그후 리턴하여 결과값을 보냅니다.
ex1)
{
function solution(i, j, k) {
return Array(j-i+1).fill(i).map((v,index) => v + index).join('').split(k).length -1
}
console.log(solution(1,13,1));
//6
}
ex2)
{
function solution(i, j, k) {
return Array(j-i+1).fill(i).map((v,index) => v + index).join('').split(k).length -1
}
console.log(solution(10,50,5));
//5
}
가까운 수
※풀이
1. array.sort((a,b) => a - b)를 사용하여 array값을 오름차순으로 정렬합니다.
※array.sort((a, b) => a - b)는 배열 array를 오름차순으로 정렬하는 방식
sort() 메서드에는 비교 함수가 필요합니다. 비교 함수는 두 개의 인자 a와 b를 받아서 비교 결과를 반환해야 합니다.
a - b를 반환하면 sort() 메서드는 a를 b보다 작은 값으로 간주하여 정렬합니다.
반환 값이 0보다 작은 경우에는 a를 b보다 앞으로 정렬합니다.
반환 값이 0인 경우에는 순서를 변경하지 않습니다.
반환 값이 0보다 큰 경우에는 a를 b보다 뒤로 정렬합니다.
a - b의 결과에 따라 sort() 메서드는 배열의 요소를 정렬합니다.
a - b의 값이 음수일 경우 a가 b보다 작으므로 a는 b 앞으로 정렬됩니다.
a - b의 값이 0일 경우 a와 b는 같은 값이므로 순서를 변경하지 않습니다.
a - b의 값이 양수일 경우 a가 b보다 크므로 a는 b 뒤로 정렬됩니다.
2. Difference 변수를 Infinity로 저장합니다. 이 변수는 현재까지의 최소 차이 값을 저장합니다.
3. result 변수를 0으로 저장합니다. 이 변수는 n과 가장 가까운 값을 저장합니다.
4. array의 각 요소 i에 대해서 반복합니다.
5. Math.abs(n-i)를 사용하여 n과 i의 차이의 절댓값을 계산합니다.
6.계산한 차이가 현재까지의 최소 차이보다 작으면 다음을 수행합니다:
·Difference를 계산한 차이로 저장합니다.
·result를 i로 업데이트합니다.
7. 반복이 종료되면 result를 반환합니다.
sort() | JavaScript 배열 객체의 메서드로, 배열의 요소를 정렬하는 기능을 제공합니다. |
Infinity | JavaScript의 숫자 타입(Number type) 중 하나로, 양의 무한대를 나타내는 값입니다. 즉, Infinity는 양의 무한대를 나타내는 상수입니다. |
Math.abs() | Math.abs()는 JavaScript의 Math 객체의 메서드로, 주어진 숫자의 절댓값을 반환하는 기능을 제공합니다. Math.abs() 메서드는 하나의 숫자를 인자로 받고, 해당 숫자의 절댓값을 반환합니다. 즉, 만약 인자로 음수가 전달되면 그 값을 양수로 변환하여 반환하며, 양수가 전달되면 그대로 반환합니다. |
ex1)
{
function solution(array, n) {
array.sort((a,b) => a - b)
let Difference = Infinity;
let result = 0;
for(let i of array){
if(Math.abs(n-i) < Difference){
Difference = Math.abs(n-i)
result = i
}
}
return result
}
console.log(solution([3, 10, 28],20));
//28
}
ex2)
{
function solution(array, n) {
array.sort((a,b) => a - b)
let Difference = Infinity;
let result = 0;
for(let i of array){
if(Math.abs(n-i) < Difference){
Difference = Math.abs(n-i)
result = i
}
}
return result
}
console.log(solution([10, 11, 12],13));
//12
}