N

(프로그래머스 JS KAKAO)튜플 본문

프로그래머스 알고리즘/KAKAO

(프로그래머스 JS KAKAO)튜플

naeunchan 2021. 5. 13. 15:09
728x90
반응형

https://programmers.co.kr/learn/courses/30/lessons/64065?language=javascript 

 

코딩테스트 연습 - 튜플

"{{2},{2,1},{2,1,3},{2,1,3,4}}" [2, 1, 3, 4] "{{1,2,3},{2,1},{1,2,4,3},{2}}" [2, 1, 3, 4] "{{4,2,3},{3},{2,3,4,1},{2,3}}" [3, 2, 4, 1]

programmers.co.kr

문자열로 된 s를 숫자로 바꿔 array 또는 set 배열에 넣어주자.

s[i]가 '0' ~ '9'라면 string으로 연결한다.

만약 s[i]가 쉼표(,)이거나 닫는 괄호({)라면 array에 넣거나 set에 넣어준다.

넣는 조건은 string의 길이이다.

string이 빈 문자면 set 배열에 array를 넣어주고,

비어있지 않다면 array에 string을 넣어준다.

 

그 후 set의 각 엘리먼트의 길이에 따라 오름차순 정렬을 한 후,

중복 여부에 따라 answer에 넣어주도록 한다.

 

function solution(s) {
    const answer = [];
    const set = [];
    let string = "";
    let array = [];
    
    for(let i = 0; i < s.length; i++){
        if(s[i] >= "0" && s[i] <= "9"){
            string += s[i];
        }
        else if(s[i] === "," || s[i] === "}"){
            if(string.length > 0){
                array.push(parseInt(string));
            }
            else{
                set.push(array);
                array = [];
            }
            string = "";
        }
    }
    set.sort((a, b) => a.length - b.length)
        .forEach((element) => {
        element.forEach((value) => {
            if(answer.indexOf(value) === -1){
                answer.push(value);
            }
        })
    });
    
    return answer;
}
728x90
반응형