728x90
문제
https://programmers.co.kr/learn/courses/30/lessons/42747
코드
function solution(citations) {
let answer = 0;
citations.sort((a, b) => (b - a)); //내림차순 정렬
//i는 인용횟수, citations[i]는 각 인용횟수별 논문개수
for (let i=0; i<citations.length; i++) {
if (i < citations[i]) answer++; //인용횟수가 논문개수보다 작을때까지는 계속해서 +1 해주기 (최대값을 구하는 거니까)
}
return answer;
}
후기
- 많은 분들의 후기를 보니 나처럼 문제 이해에 골머리 앓는 분들이 많은 것 같았다
- 처음에는 주어진 테스트케이스의 해설을 보며 생각보다 쉽군 하며 접근해 보았는데 완전 큰코 다쳤다. 주어지는 배열을 오름차순 정렬하고 중간값을 찾아서 중간값 이후의 숫자들이 중간값크기보다 크냐 작냐에 따라 중간값을 이동하며 값을 return 하려고 했는데, 하면 할수록 함정에 빠진 것마냥 하드코딩이 되어가고 답이 안나오는 상황을 겪었다
- 결국 다른 분의 풀이를 참고하였는데, 이 문제를 제대로 이해하기 위해서는 다음 사이트를 참고하는 것이 정말 큰 도움이 되었다 (문제 이해가 안되시는 분들은 꼭 보시길 바란다!)
- https://www.ibric.org/myboard/read.php?Board=news&id=270333
- 사이트를 이해하고 나니 코드가 너무 간결해서 민망할 지경이었다
'알고리즘 > Programmers' 카테고리의 다른 글
[Programmers] 이상한 문자 만들기 / JavaScript (0) | 2022.02.01 |
---|---|
[Programmers] 약수의 합 / JavaScript (0) | 2022.02.01 |
[Programmers] 프린터 / JavaScript (0) | 2022.01.25 |
[Programmers] 구명보트 / JavaScript (0) | 2022.01.25 |
[Programmers] 최솟값 만들기 / JavaScript (0) | 2022.01.20 |