본문 바로가기
코테 스터디

[javascript] 프로그래머스 Lv1

by HIIDO 2023. 9. 2.
반응형

1. 핸드폰 번호 가리기

function solution(phone_number) {
    const star = phone_number.length - 4;
    return "*".repeat(star) + phone_number.slice(-4);
}

slice는 음수를 지원함

 

2. 제일 작은 수 제거하기

function solution(arr) {
    arr.splice(arr.indexOf(Math.min(...arr)), 1);
    arr.length <= 1 ? answer = [-1] : answer = arr;
    return answer;
}

배열의 최소값을 찾을 때 Math.min(...arr) <- 전개연산자

 

3. 없는 숫자 더하기

function solution(numbers) {
    var answer = 0;
    for(let i = 0; i < 10; i++) {
        if(!numbers.includes(i)) answer += i;
    }
    return answer;
}

 

 

4. 제일 작은 수 제거하기

function solution(arr) {
    if(arr.length <= 1) {
        return [-1];
    }
    
    let minValue = arr[0]; // 초기 최소값
    
    for(let i = 1; i < arr.length; i++) {
        if(arr[i] < minValue) {
            minValue = arr[i];
        }
    }
    
    // 최소값을 제외한 배열
    const result = [];
    for(let i = 0; i < arr.length; i++) {
        if(arr[i] !== minValue) {
            result.push(arr[i]);
        }
    }
    
    return result;
}

 

5. 나누어 떨어지는 숫자 배열

function solution(arr, divisor) {
    var answer = [];
    for(let i = 0; i < arr.length; i++) {
        if(arr[i] % divisor === 0) {
            answer.push(arr[i]);
        }
    }
    if(answer.length === 0) {
        answer.push(-1);
    }
    answer.sort((a,b) => a-b);
    return answer;
}

answer.push([-1])을 해버려서 틀렸던 문제

 

6. 평균 구하기

function solution(arr) {
    var answer = 0;
    var sum = 0;
    for(let i = 0; i < arr.length; i++) {
        sum += arr[i];
    }
    answer = sum / arr.length;
    return answer;
}

 

7. 정수 내림차순으로 배치하기

function solution(n) {
    var answer = 0;
    var str = n.toString().split('');
    answer = str.sort((a,b) => b-a);
    answer = answer.join('');
    answer = parseInt(answer);
    return answer;
}

그냥 answer.join('') 말고 answer = answer.join('') 해줘야 됨

 

8. 두 정수 사이의 합

function solution(a, b) {
    var answer = 0;
    for(let i = a; i <= b; i++) {
        answer += i;
    }
    for(let i = b; i <= a; i++) {
        answer += i;
    }
    // 두 수가 같은 경우
    if(a === b) {
        answer = a;
    }
    return answer;
}

두 수의 대수 비교

두 수가 같은 경우 고려

 

9. 제일 작은 수 제거하기

function solution(arr) {
    var answer = [];
    var min;
    if(arr.length <= 1) {
        return [-1];
    }
    for(let i = 0; i < arr.length; i++) {
        min = Math.min(...arr);
    }
    let idx = arr.indexOf(min);
    answer = [...arr.slice(0, idx), ...arr.slice(idx+1)];
    
    return answer;
}

...arr.slice(0, idx), ...arr.slice(idx+1): idx를 제거한 앞뒤 부분을 합치는 것

...arr하는 이유: 원본 배열 변경하면 안 됨

 

 

반응형