[JS] 프로그래머스 N으로 표현

bepyan·2021년 4월 28일
1

알고리즘

목록 보기
11/16

문제 링크

https://programmers.co.kr/learn/courses/30/lessons/42895

코드

숫자 7을 2번 사용하여 만들 수 있는 경우의 수

  1. 연달아 2번 사용: 77
  2. 사칙연산 7 + 7 = 14, 7 -7 = 0, 7 * 7 = 49, 7 / 7 = 1
    1번 사용한 경우와 1번 사용하여( 2 = 1 + 1 ) 만들어진 숫자끼리 사칙연산을 한다.

따라서 계속해서 N번을 사용하여 만들 수 있는 숫자를 구할 수 있다.

function solution(N, number) {
    // N을 1 ~ 8번 사용해서 만드는 수로 만든 SET
    const nums = [...Array(9)].map(_ => new Set());
    for (var v = 1; v <= 8; v++) {
        // 이어 붙여서 만드는 경우
        nums[v].add(parseInt(`${N}`.repeat(v)));

        // 모든 조합 경우의 수 (1번 사용 +-*/ 3번set => 총 4번 사용)
        for (var i = 1; i < v; i++) {
            for (var a of nums[i].keys())
                for (var b of nums[v - i].keys()) {
                    nums[v].add(a + b);
                    nums[v].add(a - b);
                    nums[v].add(a * b);
                    nums[v].add(parseInt(a / b));
                }
        }
        if (nums[v].has(number)) return v;
    }
    return -1;
}
profile
쿠키 공장 이전 중 🚛 쿠키 나누는 것을 좋아해요.

0개의 댓글