반응형
리뷰
처음엔 문제 이해가 잘 되지 않았는데 벡터 내에 존재하는 수가 n개 이상인 최대값을 구하는 문제로 받아들였다.
전역 변수
- v : 나온 숫자의 합계를 저장해 둘 정수형 배열, 크기는 10001로 세팅한다.
함수
없음
문제풀이
- 매개변수로 주어진 citations 벡터에 존재하는 값들을 for문을 통해 모두 탐색한다.
- v배열의 1 ~ 현재수까지의 인덱스를 모두 1씩 증가시켜준다.
- len을 citations벡터의 길이로 초기화 해주고, h_index변수를 0으로 초기화 해준다.
- len크기로 while문을 개행하고 현재 v의 len인덱스가 len값보다 클 경우 h_index를 len으로 바꾼 후 탐색 종료
- 아니라면 len값을 1씩 계속 줄여나가며 탐색을 계속해준다.
- 최종적으로 h_index를 리턴해 준다.
참고 사항
0의 개수를 올려주지 않은 이유는 어차피 h_index를 0으로 초기화 할 것이기 때문이다. (기본값)
정답 코드
#include <string>
#include <vector>
using namespace std;
int v[10001];
int solution(vector<int> citations) {
for (int i:citations) while(i) v[i--]++;
int len = citations.size();
int h_index = 0;
while(len) {
if (v[len] >= len) {
h_index = len;
break;
}
else len--;
}
return h_index;
}
728x90
반응형
'알고리즘 공부 > C++' 카테고리의 다른 글
[L3] 프로그래머스 네트워크 C++ 유니온 파인드 (2) | 2024.10.19 |
---|---|
[G5] 백준 1593번 문자 해독 C++ 슬라이딩 윈도우, 구현, 문자열 (0) | 2024.10.19 |
[L2] 프로그래머스 C++ 가장 큰 수 정렬, 문자열 (0) | 2024.10.19 |
[P3] 백준 14288번 회사 문화 4 C++ 세그먼트 트리, 느리게 갱신되는 세그먼트 트리, 오일러 경로 테크닉 (2) | 2024.10.18 |
[P3] 백준 14287번 회사 문화 3 C++ 세그먼트 트리, 오일러 경로 테크닉 (1) | 2024.10.17 |