본문 바로가기
개인 공부/TIL

[ TIL - PGS ] 99클럽 코테 스터디 12일차 TIL + 오늘의 학습 가이드

by 킴도비 2024. 8. 2.

💡 오늘의 학습 키워드

  • 정렬

 

✅ 오늘 공부한 내용

  • 오늘의 프로그래머스 문제! H-Index
 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

 

👀 오늘의 회고

🤣 오늘의 문제점

  • 오늘은 진짜 문제에 현혹되지 말고, 잘 이해하자..였다
  • 한시간 동안 이게 무슨 소리지? 하고 이해하는데 반... 이게 왜 안되지? 이게 왜 되지? 하는데 반...
  • 다시 문제를 들여다보고 해결이 되었다..

 

🔥 어떤 시도를 했는가?

  • h-index 지수가 어떤 것인지 잘 이해하자..
  • 초반에는 그냥 아무 생각 없이 HashMap까지 써가며 만들었었는데 그럴 필요가 없는 문제였다.
  • 문제의 요지는 h-Index의 정의를 깨닫는 것.. 사람들이 질문하기에도 문제에 답이 다 있던데요.. 라고 하셨다.
  • 하지만 프로그래머스 문제보다는 위키 백과에 있는 h 지수의 정의가 핵심인 문제였다. (+ 더하여 그림으로 보면 더 잘 이해가 된다. 어느 지점이 h-Index가 되는지 보여주는 글이 있다)
  • h지수의 정의
    • 어떤 연구자가 살면서 N개의 논문을 썼다. 그런데 그 중 h회 이상 인용된 논문h개 이상일 때 둘을 동시에 만족하는 수
    • 인데! 한마디로 2가지 조건을 만족하는 것이 핵심이란 뜻이다
  • 자 그러면 우리의 문제로 와서 이해해 보자.
  • 우리가 가지고 있는 숫자 중 하나는 구할 필요가 없다.
    • 먼저 h회 이상 인용된 논문의 숫자는 citations로 주어지기 때문이다.
    • 그렇다면 우리가 구해야 하는 것은 무엇인가? 바로 h 개의 논문의 갯수 중 최댓값이 필요하다.
  • 즉, 그림으로 보자면 한 마디로 아래와 같다는 소리다.
  • 한마디로 H-지수는 연구 성과를 평가하기 위한 지표인데 인용한 숫자와 논문수가 같아지는 그 순간이 역량을 판단하기 좋다고 생각한 위치이고, 그 이후부터는 인용하는 숫자가 줄면서 논문의 수는 는다는 것을 알게해주기 좋은 지표란 소리다....
  • 즉 인용된 숫자가 클 수록 너 아직 평가하기 좀 그래~ 라고 한 거고..
  • 인용된 숫자랑 논문 숫자가 같으면 흥미가 가는데? 라고 판단해서 보자고 한거고
  • 인용된 숫자가 작을 수록 ㅇㅇ 너 인정~ 이런 느낌이라고 나는 이해했다...

 

  • 그렇기에 다시 알고리즘적 사고로 돌아와 보자면 
  • 빠르게 정렬을 시켜주면 계산하기가 편해진다는 소리다.
  • 아래 코드를 보면 더 빨리 이해할 수 있을 것이다.
import java.util.*;

class Solution {
    public int solution(int[] citations) {
        int answer = 0;
        
        int n = citations.length;
        Arrays.sort(citations); // [0, 1, 3, 5, 6]
        
        for(int i = 0; i < n; i++){
        	// h 개 이상 인용된 논문의 수들 미리 계산
            int h = n - i;
            
            if(citations[i] >= h){
                answer = h;
                break;
            } 
        }
    
        
        return answer;
    }
}

 

👏 무엇을 새로 알았는가?

  • H-Index가 무엇인가?에 대해 알게 되었다.

 

👩‍💻 내일은 무엇을 학습할 것인가?

  • 항해 99 문제 풀기
  • 원티드..!를 좀 끝내보자(ㅠㅠ)