말랑한 하루

[Programmers] 튜플 (Lv 2, JavaScript) 본문

문제풀이/Programmers

[Programmers] 튜플 (Lv 2, JavaScript)

지수는말랑이 2022. 9. 19. 15:05
반응형

[ 소스 코드 ]

function solution(s) {
    var answer = [];
    var tuples = s.replace(/},/g, "-")
        .replace(/[{}]/g, "")
        .split("-")
        .sort((o1, o2) => o1.length - o2.length)
    tuples = tuples.map((tuple) => {
        return tuple.split(",").map((item) => {
            return parseInt(item, 10);
        });
    })
    tuples.forEach((tuple, index) => {
        for(var i=0; i<tuple.length; i++) {
            if (!answer.includes(tuple[i])) {
                answer[index] = tuple[i];
                break;
            }
        }
    })
    
    return answer;
}

[ 심화 코드 ]

function solution(s) {
    return JSON.parse(s.replace(/{/g, '[').replace(/}/g, ']'))
    .sort((a, b) => a.length - b.length)
    .reduce((arr, v, n) => {
        if (n) {
            return arr.concat(v.filter(f => !arr.includes(f)));
        }
        return v;
    }, []);
}

[ 코드 분석 ]

중괄호에 대해 전체적으로 대괄호로 치환 후, 글자 길이순으로 정렬, reduce를 이용해 누적 arr을 반환하는 방식이다.

filter를 활용해서 중복되지 않은 요소를 추출하고, concat으로 누적 arr에 배열을 추가해주는 방식으로 진행하여 깔끔했다.

반응형
Comments