[프로그래머스 레벨투] 튜플 🥯

9rganizedChaos·2021년 10월 15일
0
post-thumbnail

🔽 문제 링크

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

✍🏼 나의 수도 코드

  1) s의 맨 앞과 맨 뒤를 잘라낸다.
  2) s를 배열로 가공한다.
  3) 정렬 후 반복문을 통해 tuple 배열에 들어있지 않은 요소를 하나씩 추가한다.
  4) 튜플을 반환한다.

👨🏻‍💻 나의 문제 풀이

function solution(s) {
    s = s.slice(2);
    s = s.slice(0, s.length - 2);
    let tuple = [];
    
    let tupleArr = s.split("},{").map(str => str.split(",")).map(arr => arr.map(letter => Number(letter))).sort((a, b) => a.length - b.length).forEach(arr => arr.forEach(num => {
        if(!tuple.includes(num)){
           tuple.push(num);
        } 
    }))
    return tuple;
}

👩🏻‍💻 다른 사람의 코드

JSON.parse 활용 풀이

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;
    }, []);
}

Set 활용 풀이

const solution = s => tupple(changeMatrix(getSets(s)));

const getSets = s => {
  const sets = s.match(/{[\d,]+}/g);
  return sets
    .map(set => set.match(/[\d]+,?/g).map(v => parseInt(v)))
    .sort((a, b) => a.length - b.length);
};

const changeMatrix = sets => sets.reduce((_, set) => _.concat(set), []);

const tupple = arr => [
  ...arr.reduce((set, value) => set.add(value), new Set())
];

🍯 알게 된 것들

  • JSON.parse를 활용해 문자열로 작성된 배열을 진짜 배열로 변환할 수 있다.

  • new Set Array와 다르게 Set은 같은 value를 두 번 포함할 수 없다. 또한 Set에는 index가 존재하지 않는다.

profile
부정확한 정보나 잘못된 정보는 댓글로 알려주시면 빠르게 수정토록 하겠습니다, 감사합니다!

0개의 댓글