Programmers - 튜플

Doodream·2021년 4월 3일
0

코딩테스트

목록 보기
16/22
post-thumbnail

💻 튜플


❓ 문제

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

✔️ 코드

function solution(s) {
    var answer = [];
    var sTmp = JSON.parse(JSON.stringify(s));
    sTmp = sTmp.split(",{").join('');
    sTmp = sTmp.split("}");
    sTmp[0] = sTmp[0].split("{").join('');
    sTmp = sTmp.filter(a => a.length > 0);
    sTmp = sTmp.map(a => a.split(","));
    sTmp.sort((a, b) => a.length - b.length);
    sTmp.map(x => {
        if (answer.length === 0) answer.push(...x);
        x.map(y => {
            if (!answer.includes(y)) {
                answer.push(y);
            }
        })
    });
    answer = answer.map(Number);
    return answer
}

❗️풀이과정

문제의 문자열을 다루는 능력을 평가하는 문제이다.
{,}, , 이 세개의 문자를 다른형태로 replace하거나 제거하거나 배열로 바꿔가면서 문제를 해결해나가야한다.

  • 문자열의 원소를 배열로 나눌때 각 원소를 구분지을 문자를 ,{라고 split하면 맨앞의 문자만 {{숫자 이러한 형태로 남게되고 나머지는 문자열 형태로 남게된다.
  • 다시 split(})라고 하게되면 위와 같다.
  • 맨앞의 원소의 {{ 부분을 제거한다.
  • 아무것도 남지 않은 문자열을 제거한다.
  • 배열안의 문자열을 다시 배열로 바꾸어 이중 배열로서 순수한 숫자만을 남게한다.
  • 배열을 항상 같은형태로서 인식할 수 있도록 배열의 길이가 짧으 순으로 재배열하고
  • 앞에서 부터 튜플의 형태가 갖춰지도록 중복된 원소를 걸러 받는다.

원소를 숫자로 바꾸고 끝!

배운점

  • ...a 라고 하는 spread 연산자는 중복을 걸러내지 못한다.
profile
일상을 기록하는 삶을 사는 개발자 ✒️ #front_end 💻

0개의 댓글