난이도: Lv.2
문제: https://school.programmers.co.kr/learn/courses/30/lessons/42747
알고리즘
1. 주어진 citations 배열을 정렬한다.
2. i번 이상 인용된 논문이 몇 개인지 확인해야 한다. i번 이상 인용된 논문이 몇 번째 인덱스부터인지 확인하기 위해 findIndex 함수를 사용한다. (citations 배열의 길이 - findIndex를 통해 얻은 인덱스)가 i번 이상 인용된 논문의 개수이다. i번 이상 인용된 논문의 개수가 i개 이상이라면 정답 조건에 부합하므로 answer에 i값을 저장한다.
3. i번 이상 인용된 논문의 개수가 i개 미만이라면 i를 증가시키며 for루프를 돌아도 정답 조건을 만족시키는 경우는 없다. 따라서 for문을 break 한다.
코드
function solution(citations) {
var answer = 0;
const len = citations.length;
citations.sort((a, b) => a - b);
for (let i = 0; i < citations[len - 1]; i++) {
let idx = citations.findIndex((element) => element >= i);
if (len - idx >= i) { answer = i; }
else { break; }
}
return answer;
}
주저리
아침부터 일어나서 현장실습 사전 교육 들으면서 푼거라 얼빠져서 5초 전에 뭐 하고 있었는지 자꾸 까먹어서 푸는데 좀 걸렸다. 생각해 보면 별거 아닌 문제인데 너무 어렵게 생각한 거 같다.
'코딩테스트' 카테고리의 다른 글
[JS] [1차] 캐시 (0) | 2023.12.11 |
---|---|
[JS] 의상 (0) | 2023.12.10 |
[JS] 할인 행사 (1) | 2023.12.08 |
[JS] n^2 배열 자르기 (0) | 2023.12.06 |
[JS] 괄호 회전하기 (0) | 2023.12.05 |