https://school.programmers.co.kr/learn/courses/30/lessons/42747
๋ฌธ์ ์ค๋ช
H-Index๋ ๊ณผํ์์ ์์ฐ์ฑ๊ณผ ์ํฅ๋ ฅ์ ๋ํ๋ด๋ ์งํ์ ๋๋ค. ์ด๋ ๊ณผํ์์ H-Index๋ฅผ ๋ํ๋ด๋ ๊ฐ์ธ h๋ฅผ ๊ตฌํ๋ ค๊ณ ํฉ๋๋ค. ์ํค๋ฐฑ๊ณผ1์ ๋ฐ๋ฅด๋ฉด, H-Index๋ ๋ค์๊ณผ ๊ฐ์ด ๊ตฌํฉ๋๋ค.
์ด๋ค ๊ณผํ์๊ฐ ๋ฐํํ ๋ ผ๋ฌธ nํธ ์ค, h๋ฒ ์ด์ ์ธ์ฉ๋ ๋ ผ๋ฌธ์ด hํธ ์ด์์ด๊ณ ๋๋จธ์ง ๋ ผ๋ฌธ์ด h๋ฒ ์ดํ ์ธ์ฉ๋์๋ค๋ฉด h์ ์ต๋๊ฐ์ด ์ด ๊ณผํ์์ H-Index์ ๋๋ค.
์ด๋ค ๊ณผํ์๊ฐ ๋ฐํํ ๋ ผ๋ฌธ์ ์ธ์ฉ ํ์๋ฅผ ๋ด์ ๋ฐฐ์ด citations๊ฐ ๋งค๊ฐ๋ณ์๋ก ์ฃผ์ด์ง ๋, ์ด ๊ณผํ์์ H-Index๋ฅผ return ํ๋๋ก solution ํจ์๋ฅผ ์์ฑํด์ฃผ์ธ์.
์ ํ์ฌํญ
- ๊ณผํ์๊ฐ ๋ฐํํ ๋ ผ๋ฌธ์ ์๋ 1ํธ ์ด์ 1,000ํธ ์ดํ์ ๋๋ค.
- ๋ ผ๋ฌธ๋ณ ์ธ์ฉ ํ์๋ 0ํ ์ด์ 10,000ํ ์ดํ์ ๋๋ค.
์ ์ถ๋ ฅ ์
citations | return |
[3, 0, 6, 1, 5] | 3 |
์ ์ถ๋ ฅ ์ ์ค๋ช
์ด ๊ณผํ์๊ฐ ๋ฐํํ ๋ ผ๋ฌธ์ ์๋ 5ํธ์ด๊ณ , ๊ทธ์ค 3ํธ์ ๋ ผ๋ฌธ์ 3ํ ์ด์ ์ธ์ฉ๋์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ๋๋จธ์ง 2ํธ์ ๋ ผ๋ฌธ์ 3ํ ์ดํ ์ธ์ฉ๋์๊ธฐ ๋๋ฌธ์ ์ด ๊ณผํ์์ H-Index๋ 3์ ๋๋ค.
๋ด ํด๋ต
#include <string>
#include <vector>
#include <algorithm>
using namespace std;
int solution(vector<int> citations) {
int answer = 0;
// citations๋ฅผ ํฐ ์๋ถํฐ ์ ๋ ฌ
sort(citations.begin(), citations.end(),greater<int>());
// ๊ฐ์ฅ ๋ง์ด ์ธ์ฉ๋ ํ์๋ถํฐ ํ๋์ฉ ์ค์ฌ๊ฐ๋ฉฐ ์กฐ๊ฑด์ ๋ง๋ h๋ฅผ ์ฐพ๋๋ค.
int h = citations[0]; // ๊ฐ์ฅ ๋ง์ด ์ธ์ฉ๋ ๋
ผ๋ฌธ์ ์ธ์ฉ ํ์
while(h > 0)
{
int above_h = 0; // h๋ฒ ์ด์ ์ธ์ฉ๋ ๋
ผ๋ฌธ ์
int below_h = 0; // ๋๋จธ์ง ๋
ผ๋ฌธ ์
// h๋ฒ ์ด์ ์ธ์ฉ๋ ๋
ผ๋ฌธ ์ ์ฐพ๊ธฐ
for(int j = 0; j < citations.size(); ++j)
{
if(h <= citations[j])
++above_h;
else
break;
}
// ๋๋จธ์ง ๋
ผ๋ฌธ ์ ์ฐพ๊ธฐ
below_h = citations.size() - above_h;
// ์กฐ๊ฑด ๊ฒ์ฌ
if(above_h >= h && below_h <= h)
return h;
// ์กฐ๊ฑด์ ๋ถํฉํ์ง ์์ ์ h๋ฅผ ํ๋ ์ค์ฌ ํ์์ ์ด์ด๊ฐ๋ค.
else
--h;
}
return answer;
}
'๐ฅ๏ธ Study Note > Coding Test' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
ํ๋ก๊ทธ๋๋จธ์ค / level.1 / ๋ชจ์๊ณ ์ฌ(C++) (0) | 2023.03.27 |
---|---|
ํ๋ก๊ทธ๋๋จธ์ค / level.1 / ์ต์์ง์ฌ๊ฐํ(C++) (0) | 2023.03.27 |
ํ๋ก๊ทธ๋๋จธ์ค / level.2 / ๊ฐ์ฅ ํฐ ์(C++) (0) | 2023.03.23 |
ํ๋ก๊ทธ๋๋จธ์ค / level.1 / K๋ฒ์งธ์(C++) (2) | 2023.03.23 |
ํ๋ก๊ทธ๋๋จธ์ค C++ ๋ ํผ๋ฐ์ค ์ฌ์ดํธ (0) | 2023.03.21 |