99클럽 코테 스터디 32일차 TIL - 프로그래머스 H-index(TIL)

Gaeng·2024년 11월 28일
post-thumbnail

프로그래머스 H-Index

해결법

처음에 문제를 풀다가 옳게 가다가 93.8점으로 계속 에러가 발생..... 발생한 원인을 찾고, 반례를 알아보니, 10, 20, 30일 때에서 걸리는 것이었다.

 for (int i = 0; i < list.size(); i++) {
            if (i + 1 <= list.get(i)) { 
                answer = i + 1;         
            } else {
                break;                  
            }
        }
for(int i = 0; i<list.size(); i++){
                if(i>=list.get(i)){
                    answer=i;
                    break;
                }
            }

정말 코드를 짤 때마다 어렵다ㅠㅠ.
어떻게 하면 최적화 짤 수 있는거지... GPT코드와 다른 사람들이 짠 코드보면 정말..ㅠㅠㅠㅠ

문제풀이

import java.util.*;
class Solution {
    public int solution(int[] citations) {
        int answer = 0;
        List<Integer> list = new ArrayList<>();

        for (int i = 0; i < citations.length; i++) {
            list.add(citations[i]);
        }

        list.sort(Collections.reverseOrder());

        for (int i = 0; i < list.size(); i++) {
            if (i + 1 <= list.get(i)) { 
                answer = i + 1;         
            } else {
                break;                  
            }
        }

        return answer;
    }
}

처음에 낸 코드

import java.io.IOException;
import java.util.*;

class Solution {
    public int solution(int [] citations) {
            int answer = 0;
            int max = 0;
            List <Integer> list = new ArrayList<>();
            for(int i = 0; i<citations.length; i++){
                list.add(citations[i]);
            }
            list.sort(Collections.reverseOrder());

            for(int i = 0; i<list.size(); i++){
                if(i>=list.get(i)){
                    answer=i;
                    break;
                }
            }


            return answer;
        }
}

GPT가 최적화 시킨 코드

import java.util.*;

class Solution {
    public int solution(int[] citations) {
        Arrays.sort(citations); // 오름차순 정렬
        int n = citations.length;

        for (int i = 0; i < n; i++) {
            int h = n - i; // H-Index 후보
            if (citations[i] >= h) {
                return h;
            }
        }
        
        return 0;
    }
}
profile
문제를 해결하면서 나온 문제를 기록하는 노트

0개의 댓글