프로그래머스_H-Index

LeeYulhee·2023년 10월 27일
0

💻 문제 출처 : 프로그래머스_H-Index

👉 내가 작성한 답


import java.util.*;

class Solution {
    public int solution(int[] citations) {
        
        // 오름차순 정렬 구현
        Arrays.sort(citations);
        
        // 가장 큰 경우의 수(배열의 길이)부터 1까지 순회(1이 안 되면 그냥 return 0)하며 배열의 요소가 해당 값과 같거나 크면 return
        for(int i = citations.length; i > 0; i--) {
            for(int j = 0; j <= citations.length - i; j++) {
                if(citations[j] >= i) return i;
            }
        }
        
        return 0;
    }
}
  • 📌 접근 방식
    • 오름차순으로 배열 정렬
    • 가장 큰 h의 경우는 배열의 길이니까, 배열의 길이부터 하나씩 줄여가며 배열 요소의 값들이 해당 값과 같거나 커지면 해당 값을 return
      • 배열 요소와 값을 확인할 때 필요한 범위
        • 배열의 길이가 6인 경우
          • 6 ⇒ 0번 요소와 비교
          • 5 ⇒ 0, 1번 요소와 비교
          • 4 ⇒ 0, 1, 2번 요소와 비교
          • 위와 같은 과정 반복
  • 📌 문제 풀이 설명
    • Arrays.sort를 이용하여 citations 배열을 오름차순으로 정렬
    • for문으로 citations의 길이부터 0 초과인 경우 1씩 감소하며 순회
      • for문으로 0부터 citations의 길이 - i 이하인 경우 1씩 증가하며 순회
        • 만약 citations[j]가 i보다 크거나 같으면 return i
    • 위에 해당하지 않으면 return 0



👉 다른 사람이 작성한 답


import java.util.*;

class Solution {
    public int solution(int[] citations) {
        Arrays.sort(citations);

        int max = 0;
        for(int i = citations.length-1; i > -1; i--){
            int min = (int)Math.min(citations[i], citations.length - i);
            if(max < min) max = min;
        }

        return max;
    }
}
  • 📌 접근 방식
    • 오름차순으로 배열 정렬
    • citations[i]는 i 번째로 인용된 논문의 인용 횟수
    • citations.length - i는 현재 논문 포함하여 그 이상으로 인용된 논문의 개수
    • 위의 두 수를 비교해서 후보가 될 수 있는 작은 값을 저장
      • h번 이상 인용된 논문이 h편 이상이어야 하기 때문에 더 작은 값이 후보가 될 수 있음
    • 후보 값 중에 가장 큰 값을 return
  • 📌 문제 풀이 설명
    • Arrays.sort를 이용하여 citations 배열을 오름차순으로 정렬
    • for문으로 citations의 길이 - 1 부터 -1 초과인 경우 1씩 감소하며 순회
      • int 변수 min에 citations[i], citations.length - i 중 더 작은 값을 대입
      • 만약 max가 min보다 미만이면 max에 min을 대입
    • for문 종료 후 return min
profile
공부 중인 신입 백엔드 개발자입니다

0개의 댓글