1. K번째 수
그 사실 그렇게 큰 문제는 없는 문제였다. 시간 제한도 안 보이고 메모리 제한도 안 보이고 해서...
그냥 복사해준다음 sort해주고 push해주고 그걸 return 하면 된다.
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
vector<int> solution(vector<int> array, vector<vector<int>> commands) {
vector<int> answer;
for (int i = 0; i < commands.size(); i++)
{
vector<int> re;
int a, b, c;
a = commands[i][0];
b = commands[i][1];
c = commands[i][2];
for (int j = a - 1; j < b; j++)
{
re.push_back(array[j]);
}
sort(re.begin(), re.end());
answer.push_back(re[c - 1]);
}
return answer;
}
2. 가장 큰 수
기본적인 구현은 다 끝내놨으나 "000000...."이 나올줄은 꿈에도 몰랐다. 문제를 열심히 봤어야 했는데. 이런 변수 보는걸 연습 좀 해야겠다고 느꼈다.
#include <iostream>
#include <vector>
#include <string>
#include <algorithm>
using namespace std;
bool com(string a, string b)
{
return a+b > b+a;
}
string solution(vector<int> numbers)
{
vector<string> ans;
for (int i = 0; i < numbers.size(); i++)
{
ans.push_back(to_string(numbers[i]));
}
sort(ans.begin(), ans.end(), com);
string a = "";
if (ans[0] == "0")
return "0";
for (int i = 0; i < ans.size(); i++)
{
a += ans[i];
}
return a;
}
3. H-Index
이건 보다가 진짜 열 받았다. 아무것도 아닌데... h가 citations에 들어 있는게 아닌지 난 몰랐다... h-index에 대해 찾아보고 나서야 이해해서 푼 문제다. 예시 설명에 속지 않도록 하자.
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int solution(vector<int> citations)
{
int ans = 0;
int n = citations.size();
sort(citations.begin(), citations.end(), greater<int>());
for (int i = 0; i < n; i++)
{
if (citations[i] <= ans)
break;
ans++;
}
return ans;
}
'vidigummy KAU > 알고리즘 공부(백준!)' 카테고리의 다른 글
BOJ 2630 색종이 만들기 (0) | 2021.01.08 |
---|---|
코테 준비반 2일차 (프로그래머스 고득점 KIT 완전 탐색 (모의고사, 소수 찾기, 카펫)) (0) | 2020.08.31 |
BOJ 10610 (30)(그리디 알고리즘) (0) | 2020.08.24 |
BOJ11724(연결요소의 개수) (0) | 2020.07.31 |