할머니의 콤퓨타 도전기
Javascript로 프로그래머스 정렬 문제 풀기 본문
오늘은 자바스크립트로 프로그래머스 고득점 kit 정렬 문제를 풀어보았습니당
1. k번째수 (Level1)
https://programmers.co.kr/learn/courses/30/lessons/42748?language=javascript
- 코드 구현
- sort 메서드는 인자로 compareFunction을 받는다.
- compareFunction은 정렬 순서를 정의하는 함수이다.
- 이를 생략하면 각 요소의 문자열 변환에 따라 각 문자의 유니 코드 코드 포인트 값에 따라 정렬된다.
- 그래서 이 문제에서 정렬을 array.sort()로만 해주게 되면, 10은 2보다 작은 값으로 취급된다.(앞 글자로 비교하기 때문)
- 따라서 compareFunction을 아래와 같이 따로 정의해줘야한다!
- slice(begin, end)
- begin: 잘라낼 바열의 시작 index
- end: 잘라낼 배열의 종료 index. 이 값은 배열에 포함되지 않는다
- 잘라낸 원소들로 만든 새로운 배열을 리턴한다.
- sort 메서드는 인자로 compareFunction을 받는다.
function solution(array, commands) {
let answer = [];
commands.forEach((command) => {
let i = command[0];
let j = command[1];
let k = command[2];
let sub_array = array.slice(i-1, j);
sub_array.sort((a,b)=> a-b);
answer.push(sub_array[k-1]);
})
return answer;
}
2. 가장 큰 수 (Level 2)
https://programmers.co.kr/learn/courses/30/lessons/42746
- 풀이 설명
- a+b와 b+a를 문자열의 합 기준으로 비교하는게 포인트였다.. 나는 구글링을 통해 알게되었다.
- 코드 구현
- 두 줄로 짤 수 있었다. 자바스크립트 짱인듯
- join() 메서드를 통해 배열의 모든 요소를 문자열로 이어붙일 수 있다.
- replace() 메서드는 패턴이 일치하는 부분이 특정 문자열로 교체되어 새로운 문자열을 반환된다.
- 패턴은 정규식이나 문자열이 가능하다.
- 패턴이 문자열일 경우 첫 번째로 일치되는 문자열만 교체된다.
- https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/String/replace
function solution(numbers) {
let answer = numbers.map((number) => number.toString()).sort((a,b) => (b+a) - (a+b)).join("");
return answer.replace(/^0+/, "0");
}
3. H-Index (Level 2)
https://programmers.co.kr/learn/courses/30/lessons/42747?language=javascript
- 풀이 설명
- 우선 인용 횟수를 오름차순 정렬한다.
- 가능한 h의 최대값은 논문의 수 이므로 이를 하나씩 줄여가면서 h번 이상 인용된 논문이 h 편 이상인지 체크한다.
- 코드 구현
- 인용 횟수를 오름차순으로 정렬했기에 citations.length-i 인덱스 위치의 인용 횟수가 i보다 크면 i번 이상 인용되었다고 볼 수 있다.
- 코드 자체는 c++로 풀었을 때랑 다른게 없다.
function solution(citations) {
let answer = 0;
citations.sort((a,b) => a-b);
for(let i=citations.length; i>0; i--){
if(citations[citations.length-i] >= i){
answer = i;
break;
}
}
return answer;
}
'Algorithm > Problem Solving' 카테고리의 다른 글
Javascript로 프로그래머스 스택/큐 문제 풀기 (0) | 2021.06.25 |
---|---|
Python으로 백준 16987번을 풀어보자 (0) | 2021.06.23 |
Javascript로 프로그래머스 해시 문제 풀기 (0) | 2021.06.22 |
Programmers: 신규 아이디 추천 (0) | 2021.04.29 |
Programmers: 추석 트래픽 (0) | 2021.04.28 |
Comments