-
[프로그래머스] H-Index (07.12)algorithm/프로그래머스 2020. 7. 12. 23:13
문제
https://programmers.co.kr/learn/courses/30/lessons/42747
접근법
두가지의 방식으로 풀었다.
첫 번째 방식은 직관적으로 이중포문을 사용하여서 풀었다.
배열의 수를 정렬하고 큰 수부터 차례로 조건과 비교해나가면서 연산하였다.두 번째 방식은 좀 더 규칙을 찾는데에 힘을 썼다.
첫 번째 방식과 마찬가지로 먼저 정렬을 하였다.
그 후 큰 수부터 차례로 비교하는데 h값은 점점 작아지고, 그에 맞춰 h보다 큰 값의 개수는 늘어나게 된다.
h값은 감소하고, h보다 큰값은 증가하는데 두 값이 교차하는 순간이 조건에 부합하는 순간이다.코드
첫 번째 방식import java.util.Arrays; class Solution { public int solution(int[] citations) { int answer = 0; Arrays.sort(citations); int max = citations[citations.length-1]; while(max >= 0){ int cnt = 0; for(int i=citations.length-1;i>=0;i--){ if(max <= citations[i]) cnt++; else break; } if(cnt >= max && citations.length-max <= max) { answer = max; break; } max--; } return answer; } }
두 번째 방식
import java.util.Arrays; class Solution { public int solution(int[] citations) { int answer = 0; Arrays.sort(citations); for(int i = citations.length - 1; i >= 0; i--) { if(citations.length - i >= citations[i]) break; answer++; } return answer; } }
'algorithm > 프로그래머스' 카테고리의 다른 글
[프로그래머스] 숫자 야구 (07.20) (0) 2020.07.20 [프로그래머스] 라면공장 (07.16) (0) 2020.07.16 [프로그래머스] 여행경로 (07.15) (0) 2020.07.15 [프로그래머스] 단어 변환 (07.13) (0) 2020.07.13 [프로그래머스] 모의고사 / 가장 큰 수 (07.11) (0) 2020.07.11