array의 각 값들과 주어진 값 간의 차이를 새로운 배열에 저장하고, 차이가 가장 적을 때의 index를 구하여 값을 구한다.
가장 가까운 수가 여러 개일 경우 더 작은 수를 return 한다는 규칙이 있다.
ex) [1, 2, 12, 8], 10
12가 먼저 탐색되어 8이 아닌 12가 출력되므로 오름차순 정렬을 해주어 더 작은 수가 먼저 탐색되도록 해주어야 한다.
function solution(array, n) {
let sort = array.sort((a,b) => a-b); // 중요!
let arr = [];
sort.map(a => arr.push(Math.abs(n - a)));
let min = Math.min.apply(null, arr);
return sort[arr.indexOf(min)];
}
⭐️ Math.abs( ) : 절댓값
⭐️ Math.min.apply(null, array) : 최솟값
반복문과 조건문을 이용해 3,6,9의 개수를 구해주었다.
function solution(order) {
let answer = 0;
let arr = String(order).split('');
for(i=0;i<arr.length;i++){
if(arr[i] === "3" || arr[i] ==="6" || arr[i] ==="9"){
answer += 1;
}
}
return answer;
}
반복문과 조건문 대신 filter를 이용할 수도 있다.
function solution(order) {
return order
.toString()
.split("")
.filter((v) => v === "3" || v === "6" || v === "9").length;
}
정규표현식을 이용해 구할 수도 있다.
function solution(order) {
var answer = [...order.toString().matchAll(/[3|6|9]/g)].length;
return answer;
}
반복문을 통해 code만큼씩 증가시킨 값을 구해준다.
function solution(cipher, code) {
let answer = '';
let arr = cipher.split('');
for(i=code-1;i<arr.length;i+=code){
answer += arr[i];
}
return answer;
}
filter를 이용해 index가 code의 배수인 것을 구해준다.
function solution(cipher, code) {
return cipher.split('').filter((_, index) => (index + 1) % code === 0).join('');
}
for of
반복문으로 문자열의 문자를 하나씩 체크하고, 대소문자 판별 및 변환은 toUpperCase()
와 toLowerCase()
로 해준다.
function solution(my_string) {
var answer = '';
for(a of my_string){
if(a === a.toUpperCase()){
answer+=a.toLowerCase()
}else{
answer+=a.toUpperCase()
}
}
return answer;
}
삼항연산자를 이용해 아래처럼 코드를 단축시킬 수도 있다.
function solution(my_string) {
var answer = '';
for (let c of my_string) answer += c === c.toLowerCase() ? c.toUpperCase() : c.toLowerCase();
return answer;
}
⭐️ string.toUpperCase( ) : 대문자로 변환
⭐️ string.toLowerCase( ) : 소문자로 변환
⭐️ for of 반복문 : 문자열을 하나씩 순회할 때 쓰기 좋음.