튜플

CCKN·2020년 12월 26일
0

코딩테스트

목록 보기
17/24
post-thumbnail

튜플

문제 링크

문제 요약

제한사항

  • 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)
}

0개의 댓글