프로그래머스 코딩테스트



문제 1.가까운 수


정수 배열 array와 정수 n이 매개변수로 주어질 때, array에 들어있는 정수 중 n과 가장 가까운 수를 return 하도록 solution 함수를 완성해주세요.

function solution(array, n) {
    if (array.length === 0) {
        return null; 
    }

    let answer = array[0];
    let temp = Math.abs(array[0] - n);

    for (let i = 1; i < array.length; i++) {
        let diff = Math.abs(array[i] - n);
        if (diff < temp || (diff === temp && array[i] < answer)) {
            temp = diff;
            answer = array[i];
        }
    }

    return answer;
}

설명: 나는 절댓값을 이용하기로 했다. Math.abs()를 사용하면 절댓값을 반환한다. 이 절댓값을 비교하였고 혹여 절댓값이 같으면 더 작은 수를 answer에 넣도록 짰다.


문제 2. k의 개수


1부터 13까지의 수에서, 1은 1, 10, 11, 12, 13 이렇게 총 6번 등장합니다. 정수 i, j, k가 매개변수로 주어질 때, i부터 j까지 k가 몇 번 등장하는지 return 하도록 solution 함수를 완성해주세요.

function solution(i, j, k) {
    var answer = 0;
    let Arr = []
    
    for (let a=i; a<=j; a++){
        Arr.push(a.toString().split('').map(Number));
    }
    
    answer = Arr.flat().filter(num => num === k).length;
    
    return answer;
}

설명:


문제 3. 한 번만 등장한 문자


문자열 s가 매개변수로 주어집니다. s에서 한 번만 등장하는 문자를 사전 순으로 정렬한 문자열을 return 하도록 solution 함수를 완성해보세요. 한 번만 등장하는 문자가 없을 경우 빈 문자열을 return 합니다.

function solution(s) {

    let answer = {};
    for (let char of s) {
        answer[char] = (answer[char] || 0) + 1;
    }
    
    let uniqueChars = [];
    for (let char in answer) {
        if (answer[char] === 1) {
            uniqueChars.push(char);
        }
    }
    
    return uniqueChars.sort().join('');
}

설명: for문을 사용해서 각 문자별 카운트를 셀 수 있도록 했다.


문제 4 - 7의 개수


머쓱이는 행운의 숫자 7을 가장 좋아합니다. 정수 배열 array가 매개변수로 주어질 때, 7이 총 몇 개 있는지 return 하도록 solution 함수를 완성해보세요.

function solution(array) {
    var answer = 0;
    let result = [];
    array.forEach(num => {
        let digits = Array.from(String(num), Number);
        result.push(...digits);
    });
    
    for (let i of result){
        if(i === 7){
            answer++;
        }
    }
    
    return answer;
}

설명: 일단 forEach를 사용해서 array의 내용물을 모두 분해시켜준다. [7, 17, 77] 이라는 배열이 있으면 [7, 1, 7, 7, 7]로 바꿔준다는 말이다. 이후 for문을 돌려서 해당 요소가 7일 때마다 answer을 1씩 증가시켰다.


문제 5 - 이진수 더하기


이진수를 의미하는 두 개의 문자열 bin1과 bin2가 매개변수로 주어질 때, 두 이진수의 합을 return하도록 solution 함수를 완성해주세요.

function solution(bin1, bin2) {
    var answer = '';
    let carry = 0;

    while (bin1.length || bin2.length || carry) {
        const sum = Number(bin1.slice(-1) || 0) + Number(bin2.slice(-1) || 0) + carry; 
        answer = (sum % 2) + answer; 
        carry = sum > 1 ? 1 : 0; 
        bin1 = bin1.slice(0, -1); 
        bin2 = bin2.slice(0, -1); 
    }

    return answer;
}

설명:


Jeong

예술, 코딩, 그리고 삶