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에도 정규식을 쓸수있다는걸 알게된 오늘 이후로는 두개를 공부하고나서 리팩토링을 진행해봐야겠다.