*문제 출처는 프로그래머스에 있습니다.
문제 제목: H-Index (2단계)
문제 사이트: https://school.programmers.co.kr/learn/courses/30/lessons/42747#
문제 설명
나의 풀이
#include <string>
#include <vector>
#include <algorithm>
using namespace std;
int solution(vector<int> citations) {
int answer = 0;
int h = 0;
sort(citations.rbegin(), citations.rend());
for (int i = 0; i < citations.size(); i++) {
++h;
if ((citations[i] <= h) && (citations.size() - h <= h)) {
answer = citations[i];
break;
}
}
return answer;
}
첫 번째 풀이는 h번 이상 인용된 논문이면서 h개 이상이여야 하는 그 조건에 부합하는 것 같지만 테스트 케이스를 추가해본 결과 h번 이상 인용된 논문이 아니라 그 인덱스 위치가 결과 값으로 나온다는 사실을 알게되었다. 테스트 1은 벡터를 rsort했을 때 3이 인덱스 3이랑 위치가 같아서 얻어 걸린 정답이었다.
#include <string>
#include <vector>
#include <algorithm>
using namespace std;
int solution(vector<int> citations) {
int answer = 0;
sort(citations.rbegin(), citations.rend());
for(int i=0; i<citations.size(); i++){
if(citations[i] >= i + 1){
answer++;
}
}
return answer;
}
두 번째 풀이는 벡터 원소의 값과 i + 1(i +1를 한 이유는 논문의 개수를 i로 가정했을 때 1 <= i <= 1000이기 때문이다)를 비교해나가면서 풀었다.
※ 알아야 할 것
벡터에서 내림차순을 하고 싶을 때
sort(citations.begin(), citations.end(), greater<int>()); 방법과
sort(citations.rbegin(), citations.rend()); 방법이 있다.
결과 값은 같다.
'코딩테스트(프로그래머스 & 백준) > 프로그래머스-C++' 카테고리의 다른 글
Programmers / 의상 / C++ (0) | 2024.02.27 |
---|---|
Programmers / 프로세스 / C++ (0) | 2024.02.27 |
Programmers / n^2 배열 자르기 / C++ (0) | 2024.02.23 |
Programmers / 체육복 / C++ (0) | 2024.02.22 |
Programmers / 할인 행사 / C++ (0) | 2024.02.21 |