코딩테스트 문제풀이/프로그래머스

[프로그래머스] 고득점 Kit 동적계획법(Dynamic Programming)

itaeiou 2022. 3. 14. 14:36
반응형

42895 N으로 표현

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

 

코딩테스트 연습 - N으로 표현

 

programmers.co.kr

 

20220314 javascript 풀이

const m = new Map();

function solution(N, number) {
    let temp = 0;
    for(let i=1; i<=8; i++) {
        temp = temp * 10 + N;
        m.set(temp, i);
    }
    
    m.forEach((v1, k1) => {
        m.forEach((v2, k2) => {
            setMin(k1+k2, v1+v2);
            setMin(k1-k2, v1+v2);
            setMin(k1*k2, v1+v2);
            setMin(k1/k2, v1+v2);
        })
    })
    
    return m.has(number) ? m.get(number) : -1;
}

const setMin = (key, val) => {
    if(Number.isInteger(key) && key > 0 && val <= 8) {
        if(m.has(key)) {
            if(m.get(key) > val) {
                m.set(key, val);
            }
        } else {
            m.set(key, val);
        }
    }
}
반응형