알고리즘 풀이 - 튜플

picture 22

튜플

문제 링크

문제 요약

제한사항

  • s의 길이는 5 이상 1,000,000 이하입니다.
  • s는 숫자와 ’{’, ’}’, ’,’ 로만 이루어져 있습니다.
  • 숫자가 0으로 시작하는 경우는 없습니다.
  • s는 항상 중복되는 원소가 없는 튜플을 올바르게 표현하고 있습니다.
  • s가 표현하는 튜플의 원소는 1 이상 100,000 이하인 자연수입니다.
  • return 하는 배열의 길이가 1 이상 500 이하인 경우만 입력으로 주어집니다.

Input

  • 특정 튜플을 표현하는 집합이 담긴 문자열 s

output

  • s가 표현하는 튜플을 배열에 담아 return

해결방법

  • 우선 주어진 문자열을 배열로 나누자

    • 가장 앞과 뒤의 {{, }}를 삭제하고
    • 정규식을 이용해서 },{를 기준으로 나누고…
    • 내부에서 ,를 기준으로 나누면 될 듯
  • 나누어진 배열을 길이 순으로 정렬한다.
  • Set에 요소들을 순서대로 때려박는다

    • 작은 숫자부터 넣기 때문에 순서가 보장된다.
  • Set을 배열로 변경 후 return 한다
function solution(s) {
  const set = new Set()
  const re = new RegExp('},{', 'g')

  const sArr = s
    .slice(2, s.length - 2)
    .split(re)
    .map(s => s.split(',').map(ele => parseInt(ele)))
    .sort((a, b) => a.length - b.length)

  sArr.forEach(sa => {
    sa.forEach(sb => {
      set.add(sb)
    })
  })
  return Array.from(set)
}

Written by@박대성

독서와 지식관리에 관심이 많은 개발자

GitHub