프로그래머스 K번째수 문제 Write-Up입니다.
https://school.programmers.co.kr/learn/courses/30/lessons/42748
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
문제의 배열을 추출해 오름차순 정렬 후 조건에 맞게 원소를 출력하면 됩니다.
1. C++
풀이 1 : 배열 추출 후 정렬하고 원소를 출력합니다.
#include <string>
#include <vector>
#include <algorithm>
using namespace std;
vector<int> solution(vector<int> array, vector<vector<int>> commands) {
vector<int> answer;
for(auto i : commands) {
vector<int> v;
for(int j = i[0] - 1; j < i[1]; j++) v.push_back(array[j]);
sort(v.begin(), v.end());
answer.push_back(v[i[2] - 1]);
}
return answer;
}
풀이 2 : 배열 추출 없이 조건에 맞게 해당 부분배열만 바로 정렬 후 원소를 출력합니다. 이렇게 하면 단일 for문으로만 문제를 해결할 수 있습니다.
#include <string>
#include <vector>
#include <algorithm>
using namespace std;
vector<int> solution(vector<int> array, vector<vector<int>> commands) {
vector<int> answer;
for(auto i : commands) {
vector<int> v = array;
sort(v.begin() + i[0] - 1, v.begin() + i[1]);
answer.push_back(v[i[0] + i[2] - 2]);
}
return answer;
}
2. Python
def solution(array, commands):
return [sorted(array[i[0] - 1:i[1]])[i[2] - 1] for i in commands]
댓글