문제 유형 : 정렬
https://school.programmers.co.kr/learn/courses/30/lessons/42747
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
문제 풀이
이 문제에서 핵심은 논문 개수 h 최대값을 구해야한다. (배열 요소의 값이 아니다!)
내림 차순으로 정리한 이유는 최댓값을 빨리 찾아 시간 복잡도를 줄이기 위해서다.
문제에서 요구하는 것은 h이상 논문 개수가 h이상 되는 최대값을 찾아야한다
논문 개수가 지금 해당 값 h 이상이기 때문에 h이하인 경우를 세어준다.
(자신 의 값보다 논문의 총 개수가 많거나 같아야한다)
[6, 5, 3, 1, 0] 경우에
6 : 해당 값 : 6 / index0 : 개수 총 1개 /인용 논문 수가 6이상이 안되서 탈락
5: 해당 값 : 5 / index1 : 개수 총 2개 / 인용 논문 수가 5이상이 안되서 탈락
3 : 해당 값 : 3/ index 2 : 개수 총 3개 / 인용 논문 수가 3이상이 되서 정답
전체 코드
function solution(citations) {
// 내림차순 정렬 (문제에서 h의 최대값을 찾기 때문에)
citations.sort((a, b) => b - a);
let answers = 0;
for (let i = 0; i < citations.length; i++) {
// 인덱스가 현재 값보다 작으면 (h번 이상 인용된 논문이 1편(자기자신)이상이기 때문에)
if (i < citations[i]) {
answers++;
}else break
}
return answers;
}
'JavaScript > 알고리즘(JS)' 카테고리의 다른 글
[프로그래머스 레벨2] 타켓 넘버 [Javascript/ DFS] (0) | 2023.03.06 |
---|---|
[프로그래머스 레벨2] 가장 큰 수 [Javascript/ 정렬] (0) | 2023.03.06 |
[프로그래머스 레벨3] 가장 먼 노드 [Javascript/ BFS] (0) | 2023.03.05 |
[프로그래머스 레벨3] 입국심사 [Javascript/이진탐색] (0) | 2023.03.05 |
[프로그래머스 레벨2] 위장 [Javascript/해쉬, 객체] (0) | 2023.03.04 |