
https://school.programmers.co.kr/learn/courses/30/lessons/64065
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr

나의 풀이
function solution(s) {
s = s.replace(/[{}]/g,"").split(",")
const checkRepetition = s.reduce((acc,cur) =>{
acc[cur] = (acc[cur]|| 0) + 1
return acc
},{})
return Object.entries(checkRepetition).sort(([,a], [,b]) => b - a).map((x) => +x[0])
}
문제를 잘 읽어야 한다.
s는 객체가 주어지는 게 아니라 문자열이 주어진다.
따라서 바로 replace를 해줘서 {}들을 제거해줬다.
replace부분은 아래처럼 해줘도 된다.
s = s.replace(/\{|\}/g,"").split(",")
처음에는 아 머야 set 사용해서 중복을 제거해줘야겠다. 했는데
result를 잘보면 숫자가 순서가 있다.
바로 중복 횟수가 많으면 앞쪽이고 중복이 적을 수록 뒤쪽으로 밀려난다.
따라서 각 중복되는 숫자가 몇개인지 파악하고 그걸 기반으로 순서를 정해서 배열로 return 하면된다.
위에서 replace해준것을 가지고 reduce를 통해서 각 숫자의 중복 횟수를 파악했다. return은 객체로 나온다.
그리고 그 객체를 entries를 통해 배열로 교체하고 sort로 중복이 많을수록 앞쪽으로 나오도록 했다.
마지막으로 map을 통해서 배열의 0번째 index를 추출했다.
실수하거나 제대로 알지 못한 부분
1. 맨날 배열아니면 문자열만 다루다 보니가 객체다루는 경험이 부족했다.
객체 공부를 다시 해야겠다.
https://html-jc.tistory.com/336
[JS 개념] 객체 ( Object )
객체란? 객체는 0개 이상의 프로퍼티로 구성된 집합이며, 프로퍼티는 key 와 value로 구성된다. - 자바스크립트에서 사용할 수 있는 모든 값은 프로퍼티 값이 될 수 있다. - 따라서 함수도 프로
html-jc.tistory.com
2. 중복 체크 reduce
reduce를 정말 많이 썼다고 생각했지만 객체로 표현하는 법이 바로 생각나지 않아서 이전에 어떻게 했지 찾아봤다.
acc[cur] = (acc[cur] || 0 ) + 1 이것을 꼭 기억하자
그리고 이 기회에 다시 reduce를 복습하자
https://html-jc.tistory.com/313
[JS - 개념] reduce() <feat.. Array.prototype.concat()>
Array.prototype.reduce() 주의 : reduce는 원본배열을 변환시키지 않는다. reduce 메서드는 자신을 호출한 배열을 모든 요소를 순회하며 인수로 전달받은 콜백 함수를 반복 호출한다. 그리고 콜백 함수
html-jc.tistory.com
3. 정규표현식
아직 정규표현식을 다양하게 자주 사용하지 않아 익숙하지 않다
https://html-jc.tistory.com/303
[JS - 개념] 정규표현식
개념 정규 표현식은 일정한 패턴을 가진 문자열의 집합을 표현하기 위해 사용하는 형식 언어다. 정규 표현식은 자바스크립트의 고유 문법이 아니며, 대부분의 프로그래밍 언어와 코드 에이터에
html-jc.tistory.com
5. sort
sort는 자주 사용해서 잘 안다고 생각했지만 이전에 보았던 표현인데 정말 오랜만이라 생각이 나지 않았다.
sort(([,a], [,b]) => b - a)
바로 이거다 .
다른 사람 풀이
'알고리즘 > 프로그래머스 - JS' 카테고리의 다른 글
[프로그래머스 - JS ] level.2 [1차] 뉴스 클러스터링 (ing) (0) | 2022.11.02 |
---|---|
[프로그래머스] level.2 위장 (해시) (0) | 2022.10.25 |
[프로그래머스 - JS] level.2 n^2 배열 자르기 (0) | 2022.10.17 |
[프로그래머스] level.2 괄호 회전하기 {stack}(**) 다른사람 풀이 너무 좋음 (0) | 2022.10.13 |
[프로그래머스] level.2 H-index (1) | 2022.10.11 |

https://school.programmers.co.kr/learn/courses/30/lessons/64065
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr

나의 풀이
function solution(s) { s = s.replace(/[{}]/g,"").split(",") const checkRepetition = s.reduce((acc,cur) =>{ acc[cur] = (acc[cur]|| 0) + 1 return acc },{}) return Object.entries(checkRepetition).sort(([,a], [,b]) => b - a).map((x) => +x[0]) }
문제를 잘 읽어야 한다.
s는 객체가 주어지는 게 아니라 문자열이 주어진다.
따라서 바로 replace를 해줘서 {}들을 제거해줬다.
replace부분은 아래처럼 해줘도 된다.
s = s.replace(/\{|\}/g,"").split(",")
처음에는 아 머야 set 사용해서 중복을 제거해줘야겠다. 했는데
result를 잘보면 숫자가 순서가 있다.
바로 중복 횟수가 많으면 앞쪽이고 중복이 적을 수록 뒤쪽으로 밀려난다.
따라서 각 중복되는 숫자가 몇개인지 파악하고 그걸 기반으로 순서를 정해서 배열로 return 하면된다.
위에서 replace해준것을 가지고 reduce를 통해서 각 숫자의 중복 횟수를 파악했다. return은 객체로 나온다.
그리고 그 객체를 entries를 통해 배열로 교체하고 sort로 중복이 많을수록 앞쪽으로 나오도록 했다.
마지막으로 map을 통해서 배열의 0번째 index를 추출했다.
실수하거나 제대로 알지 못한 부분
1. 맨날 배열아니면 문자열만 다루다 보니가 객체다루는 경험이 부족했다.
객체 공부를 다시 해야겠다.
https://html-jc.tistory.com/336
[JS 개념] 객체 ( Object )
객체란? 객체는 0개 이상의 프로퍼티로 구성된 집합이며, 프로퍼티는 key 와 value로 구성된다. - 자바스크립트에서 사용할 수 있는 모든 값은 프로퍼티 값이 될 수 있다. - 따라서 함수도 프로
html-jc.tistory.com
2. 중복 체크 reduce
reduce를 정말 많이 썼다고 생각했지만 객체로 표현하는 법이 바로 생각나지 않아서 이전에 어떻게 했지 찾아봤다.
acc[cur] = (acc[cur] || 0 ) + 1 이것을 꼭 기억하자
그리고 이 기회에 다시 reduce를 복습하자
https://html-jc.tistory.com/313
[JS - 개념] reduce() <feat.. Array.prototype.concat()>
Array.prototype.reduce() 주의 : reduce는 원본배열을 변환시키지 않는다. reduce 메서드는 자신을 호출한 배열을 모든 요소를 순회하며 인수로 전달받은 콜백 함수를 반복 호출한다. 그리고 콜백 함수
html-jc.tistory.com
3. 정규표현식
아직 정규표현식을 다양하게 자주 사용하지 않아 익숙하지 않다
https://html-jc.tistory.com/303
[JS - 개념] 정규표현식
개념 정규 표현식은 일정한 패턴을 가진 문자열의 집합을 표현하기 위해 사용하는 형식 언어다. 정규 표현식은 자바스크립트의 고유 문법이 아니며, 대부분의 프로그래밍 언어와 코드 에이터에
html-jc.tistory.com
5. sort
sort는 자주 사용해서 잘 안다고 생각했지만 이전에 보았던 표현인데 정말 오랜만이라 생각이 나지 않았다.
sort(([,a], [,b]) => b - a)
바로 이거다 .
다른 사람 풀이
'알고리즘 > 프로그래머스 - JS' 카테고리의 다른 글
[프로그래머스 - JS ] level.2 [1차] 뉴스 클러스터링 (ing) (0) | 2022.11.02 |
---|---|
[프로그래머스] level.2 위장 (해시) (0) | 2022.10.25 |
[프로그래머스 - JS] level.2 n^2 배열 자르기 (0) | 2022.10.17 |
[프로그래머스] level.2 괄호 회전하기 {stack}(**) 다른사람 풀이 너무 좋음 (0) | 2022.10.13 |
[프로그래머스] level.2 H-index (1) | 2022.10.11 |