[프로그래머스] 튜플 (JS)

hhkim·2023년 8월 20일
0

Algorithm - JavaScript

목록 보기
108/188
post-thumbnail

풀이 과정

  1. 주어진 문자열 앞뒤 괄호 제거: slice()
  2. },{를 기준으로 자르기: split()
  3. 2의 각 요소를 , 기준으로 자르기: split()
  4. 3을 배열 길이를 기준으로 정렬
  5. 각 요소에 대해 반복하면서 현재 배열에서 새로운 요소를 결과 배열에 추가
    이때 결과 배열에 현재 요소가 있는지를 검사해서 판단: includes()

코드

function solution(s) {
  const result = [];
  const arr = s
    .slice(2, -2)
    .split('},{')
    .map((e) => e.split(',').map(Number));
  arr.sort((a, b) => a.length - b.length);
  for (const a of arr) {
    for (const b of a) {
      if (!result.includes(b)) result.push(b);
    }
  }
  return result;
}

🤔

이제 2중 반복문을 쓰면 찝찝해서 반신반의하면서 코드를 짰는데, 조건을 생각해보면 크게 문제가 없었다.
s의 길이가 100만까지 나온다고 하지만 그건 문자열의 길이고, 가공해서 배열로 만들면 배열 요소의 길이는 그렇게 길지 않다. (최대 약 1400?)
가공한 배열 요소의 최대 길이와 result의 최대 길이는 10만인데 이 정도는 문제가 없나 보다.
아직 어느 정도는 적당하고 아닌지 잘은 모르겠다.

0개의 댓글