vidigummy KAU/알고리즘 공부(백준!)

오늘은 프로그래머스를 했다.(고득점 KIT 정렬)

vidi 2020. 8. 30. 16:21

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;
}