알고리즘/코딩 테스트

[코딩 테스트] 프로그래머스 JS 연습 - 이진수 더하기,잘라서 배열로 저장,중복된 문자 제거,구슬을 나누는 경우의 수

Judith Hopps 2023. 1. 18. 18:49
반응형

1. 이진수 더하기

문제 설명

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

 

function solution(bin1, bin2) {
    return (parseInt(bin1,2) + parseInt(bin2,2)).toString(2)
}

2진수를 10진수로 만들 때 parseInt를 사용하고,

10진수를 2진수로 만들 때 toString을 사용한다.

 

 

2. 잘라서 배열로 저장

문제 설명

문자열 my_str과 n이 매개변수로 주어질 때, my_str을 길이 n씩 잘라서 저장한 배열을 return하도록 solution 함수를 완성해주세요.

function solution(my_str, n) {
    var answer = [];
    for (let i =0; i < my_str.length ; i += n) {
        answer.push(my_str.substring(i,i+n))
    }
    return answer;
}

substring

  • 인자로 전달받은 인덱스(들)을 기준으로 자른 문자열 반환한다.

 

 

 

3. 중복된 문자 제거

문제 설명

문자열 my_string이 매개변수로 주어집니다. my_string에서 중복된 문자를 제거하고 하나의 문자만 남긴 문자열을 return하도록 solution 함수를 완성해주세요.

function solution(my_string) {
    const set = new Set(my_string.split(''))
    return [...set].join('') ;
}

set을 이용하면 쉽게 중복 제거할 수 있다.

 

function solution(my_string) {
    return [...new Set(my_string)].join('');
}

Set에 문자열을 넣을 수도 있다.

 

4. 구슬을 나누는 경우의 수

문제 설명

머쓱이는 구슬을 친구들에게 나누어주려고 합니다. 구슬은 모두 다르게 생겼습니다. 머쓱이가 갖고 있는 구슬의 개수 balls와 친구들에게 나누어 줄 구슬 개수 share이 매개변수로 주어질 때, balls개의 구슬 중 share개의 구슬을 고르는 가능한 모든 경우의 수를 return 하는 solution 함수를 완성해주세요.

function fact(n) {
    return !n ? 1 : n * fact(n-1)
}
function solution(balls, share) {
    return Math.round(fact(balls) / fact(balls-share) / fact(share))
}

반드시, Math.round을 써야한다.

그 이유는 부동소수점 연산을 하기 때문이다. 

0.1+0.2 = 0.30000000000000004 이렇게 나온다.

반응형