문제
풀이
def solution(array, commands):
answer = []
for l in commands:
i, j, k = l[0],l[1],l[2]
answer.append(sorted(array[i-1:j])[k-1])
return answer
Python의 강점
Python의 강점인 list comprehension을 활용하여 풀면 다음과 같이 짧고 간결하게 나타낼 수 있다.(짧지만, 이 알고리즘 또한 앞서 풀었던 풀이와 똑같은 방식으로 문제를 해결한다.)
def solution(array, commands):
return [sorted(array[i-1:j])[k-1] for i,j,k in commands]
반면 C++로 풀 경우, 다음과 같이 풀어야 한다.
#include <string>
#include <vector>
#include <algorithm>
using namespace std;
vector<int> solution(vector<int> array, vector<vector<int>> commands) {
vector<int> answer;
vector<int> temp;
for(int i = 0; i < commands.size(); i++) {
temp = array;
sort(temp.begin() + commands[i][0] - 1, temp.begin() + commands[i][1]);
answer.push_back(temp[commands[i][0] + commands[i][2]-2]);
}
return answer;
}
Python의 특징과 장점을 잘 느낄 수 있는 문제인 것 같다.
Reference
https://neerc.ifmo.ru/subregions/northern.html