[javascript] 프로그래머스 레벨2 튜플

bjyyyyy·2022년 10월 17일
0

문제보기

function solution(s) {
  // '{',와 '}을 반복문을 통해서 다 제거해준다.
    let splitS = s.slice(1, s.length -1).split(',').map((item) => {
      if(item[0] === '{' && item[item.length - 1] === '}') {
        item = item.slice(1, item.length - 1)
        return item;
      }
      if(item[0] === '{') {
        item = item.slice(1)
        return item;
      }
      if(item[item.length - 1] === '}') {
        item = item.slice(0, item.length - 1)
        return item
      }
      return item
    })
    let result = {};
  // 객체에 숫자를 key 숫자가 나오는만큼 1씩 증가시켜준다.
    for (let i = 0; i < splitS.length; i++) {
        if(!result[`${splitS[i]}`]) {
          result[`${splitS[i]}`] = 1
        } else {
          result[`${splitS[i]}`] += 1
        }
    }
  // 객체의 key와 value를 배열로 바꿔서 value값을 기준으로 내림차순으로 정렬해준다.
    let sorted = Object.entries(result).sort((a, b) => b[1] - a[1]).map((item) => {
        return +item[0]
      })
    return sorted;
}

정규표현식이 복잡하고 어렵게만 느껴져서 항상 회피해왔는데 그 업보를 오늘 제대로 받았다..
쓸줄을 몰라서 무식하게 처리했는데 정규표현식과 split에도 정규식을 쓸수있다는걸 알게된 오늘 이후로는 두개를 공부하고나서 리팩토링을 진행해봐야겠다.

0개의 댓글