[JS] 프로그래머스 정렬 알고리즘 풀이

김현수·2023년 11월 29일
0

cdt

목록 보기
29/51


🖋️ 정렬 알고리즘 풀이


K번째수

  • 배열 array의 i번째 숫자부터 j번째 숫자까지 자르고 정렬
  • k번째에 있는 수를 구하기

  • 배열 array
  • [i, j, k]를 원소로 가진 2차원 배열 commands
  • 앞서 설명한 연산을 적용했을 때 나온 결과를 배열에 담아 return

function solution(array, commands) {
    return commands.reduce((acc, [i, j, k]) => {
        const arr = array.slice(i-1, j).sort((a, b) => a - b);
        acc.push(arr[k-1])
        return acc;
    }, []);
}

가장 큰 수

  • 0 또는 양의 정수가 주어졌을 때
  • 정수를 이어 붙여 만들 수 있는 가장 큰 수를 알아내기

  • 0 또는 양의 정수가 담긴 배열 numbers
  • 순서를 재배치하여 만들 수 있는 가장 큰 수를 문자열 return

  • 백틱을 이용한 문자열 내림차순
function solution(numbers) {
    const answer = numbers.sort((a, b) => `${b}${a}` - `${a}${b}`).join('');
    return answer[0] === '0' ? '0' : answer;
}
  • map 으로 string 형 변환 후 내림차순
function solution(numbers) {
    const answer = numbers.map(n => String(n)).sort((a, b) => (b+a) - (a+b)).join('');
    return answer[0] === '0' ? '0' : answer;
}

H-Index

  • 생산성과 영향력을 나타내는 지표
  • H-Index를 나타내는 값인 h를 구하기

  • 논문 n편 중 h번 이상 인용된 논문이 h편 이상
  • and, 나머지 논문이 h번 이하 인용되었다면 h의 최댓값 return

  • 내림차순 정렬 후 요소가 count 이상 처음일때 길이
const solution = (citations) => citations.sort((a, b) => b - a)
.filter((el, idx) => el >= idx + 1)
.length;
profile
일단 한다

0개의 댓글