오늘의 알고리즘
[C++]정렬 H-Index(프로그래머스 2레벨)
하늘하늘 .
2022. 3. 31. 16:37
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
|
#include <string>
#include <vector>
#include <algorithm>
using namespace std;
// 1. 보다 큰 수는 배열 수
int solution(vector<int> citations)
{
sort(citations.begin(), citations.end(), greater<int>());
// 1. 숫자보다 큰 숫자가 있어야한다.
// 2. 숫자보다 작은 숫자가 나머지여야함.
int iSize = citations.size();
for (int i = iSize; i >= 0; --i)
{
int iCount = 0;
for (int j = 0; j < i; ++j)
{
if (citations[j] >= i)
++iCount;
if (iCount >= i)
{
if (iSize - j <= i)
return i;
}
}
iCount = 0;
}
return 0;
}
|
cs |
처음에는 간단하게 생각하고 간단하게 풀려고 했는데 안되더라
그래서 이렇게 해놓고 보니까
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
#include <string>
#include <vector>
#include <algorithm>
using namespace std;
int solution(vector<int> citations) {
sort(citations.begin(), citations.end(), greater<int>());
for (int i = 0; i < citations.size(); ++i) {
if (citations[i] < i + 1) {
return i;
}
}
return citations.size();
}
|
cs |
내 생각을 그대로 풀이로 썼는데 왜 난 안됬을까 흠...
물론 이진탐색도 가능하다.