https://school.programmers.co.kr/learn/courses/30/lessons/42747#
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
https://usowelcome.tistory.com/11
99클럽 코테 스터디 4일차 TIL : 정렬 - H-index
와진짜너무어려웠다,,,,,,,난정말똥멍청이야 H-Index는 과학자의 생산성과 영향력을 나타내는 지표입니다. 어느 과학자의 H-Index를 나타내는 값인 h를 구하려고 합니다. 위키백과1에 따르면, H-Index
usowelcome.tistory.com
이 문제도 저번기수에서 풀었던 문제였다.
근데,,, 이번에도 좀 돌아돌아 풀었다...ㅎㅎ.....
계속 테스트9에서 틀려서 한참을 고민했다.
이유는 논문개수 < 최소인용횟수 인 상황을 고려하지 않았기 때문이었다.
나는 반복문 2개를 사용해서,
outer반복은 index를 하나씩 줄이고 (i)
inner반복은 h-index를 하나씩 줄여서 (citations[i] ~ citations[i-1])
모든 경우의 수를 반복했다.
이 때 h-index의 값은 인용횟수 배열의 중간값 이상이 될수는 없기때문에 (h이상 조건을 절대 만족하지 못함)
중간부터 반복을 시작했다.
논문개수 < 최소인용횟수 상황의 경우, 결과가 h-index = 논문개수 로 고정된다.
[10, 11, 12] 생각해보자
그래서 citations 정렬 후, 이런 상황에 대해 미리 처리를 해주었다.
#include <string>
#include <vector>
#include <algorithm>
#include <iostream>
#include <algorithm>
using namespace std;
int solution(vector<int> citations) {
int answer = 0;
int n = citations.size();
sort(citations.begin(), citations.end());
if(n < citations[0]){
// 논문 개수보다 최소 인용개수가 많은경우
// 무조건 n으로 고정!
return n;
}
int hindex = 0;
for(int i = (n+1)/2; i > 0; i--){
//cout << i << endl;
for(int j = citations[i]; j>=citations[i-1]; j--){
//cout << i << ", "<<j<<endl;
if((n-i) >= j){
hindex = max(j, hindex);
//cout << "Test : "<<hindex<<endl;
break;
}
}
}
return hindex;
}
난 아직 부족하구나아ㅏ,,
99클럽 코테 스터디 10일차 TIL : 숫자 카드 (0) | 2024.08.03 |
---|---|
8/1 TIL : Backtracking (0) | 2024.08.02 |
7/31 TIL : BFS (0) | 2024.08.01 |
프로그래머스 : 정렬 - 가장 큰 수 (0) | 2024.08.01 |
99클럽 코테 스터디 8일차 TIL : 카드 뭉치 (0) | 2024.08.01 |