반응형
오늘의 학습 키워드
문제 이해
알고리즘 문제
- 프로그래머스 Level 2. H-Index
- https://school.programmers.co.kr/learn/courses/30/lessons/42747
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
공부한 내용
배열 인덱스와 값의 패턴 파악
Early Return
오늘의 회고
처음 시도
- 문제를 읽었는데, 이해가 잘 안되서 여러 번 읽어봤다.
- 그래도 감이 안잡혀서 예제를 통해 문제에 대입해서 생각해봤다.
- 내가 생각한 문제 지문의 포인트
- 논문 n편 중, h번 이상 인용된 논문이 h편 이상이고 나머지 논문이 h번 이하 인용되었다면 h의 최댓값이 이 과학자의 H-Index입니다.
- 논문의 인용 횟수를 담은 배열 citations가 매개변수로 주어질 때, 이 과학자의 H-Index를 return
해결
- 지문의 예시의 [3, 0, 6, 1, 5] 배열을 정렬해보면 -> [0, 1, 3, 5, 6]
- 해당 논문을 인용한 총 논문 횟수를 h라고 하면, h는 현재 논문의 인덱스 이상에서 인용했다는 의미. => 배열을 반복 돌면서 h는 -1 된다.
- 배열[0] = 0 / h = 5 (논문 0, 1, 3, 5, 6)
- 배열[1] = 1 / h = 4 (논문 1, 3, 5, 6)
- 배열[2] = 3 / h = 3 (논문 3, 5, 6)
- 배열[3] = 5 / h = 2 (논문 5, 6)
- 배열[4] = 6 / h = 1 (논문 6)
- h의 최댓값은 배열 값이 h와 같아지거나 커졌을 때 나온다.
문제 풀이
import java.util.*;
class Solution {
public int solution(int[] citations) {
int answer = 0;
Arrays.sort(citations);
for (int i = 0; i < citations.length; i++) {
//현재 논문 인용된 총 논문 개수
int h = citations.length - i;
if (citations[i] >= h) {
answer = h;
break;
}
}
return answer;
}
}
다른 풀이
- early return을 사용해서 h를 바로 리턴해주고, early return에서 못 나가면 0으로 리턴하는 방식이 더 깔끔했다.
import java.util.*;
class Solution {
public int solution(int[] citations) {
int answer = 0;
Arrays.sort(citations);
for (int i = 0; i < citations.length; i++) {
//현재 논문 인용된 총 논문 개수
int h = citations.length - i;
if (citations[i] >= h) {
return h;
}
}
return 0;
}
}
반응형
'알고리즘' 카테고리의 다른 글
99클럽 코테 스터디 10일차 TIL - DFS, 재귀 (2) | 2024.06.02 |
---|---|
99클럽 코테 스터디 9일차 TIL - 완전탐색(일명 완탐) (0) | 2024.05.28 |
99클럽 코테 스터디 5일차 TIL - Heap (0) | 2024.05.27 |
99클럽 코테 스터디 4일차 TIL - 스택/큐 (0) | 2024.05.24 |
99클럽 코테 스터디 3일차 TIL - 스택/큐 (0) | 2024.05.22 |