Level 0) 조건문, 반복문, 시뮬레이션, 문자열

Doozuu·2023년 1월 11일
0

프로그래머스 (JS)

목록 보기
15/183

📌 문제 1. 가까운 수

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) : 최솟값



📌 문제 2. 369 게임

반복문과 조건문을 이용해 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;
}


📌 문제 3. 암호 해독

반복문을 통해 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('');
}


📌 문제 4. 대문자와 소문자

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 반복문 : 문자열을 하나씩 순회할 때 쓰기 좋음.

profile
모든게 새롭고 재밌는 프론트엔드 새싹

0개의 댓글