Algorithm/Programmers

[Programmers - lv01] K번째 수 (cpp / python)

  • -
728x90

K번째 수

 

코딩테스트 연습 - K번째수

[1, 5, 2, 6, 3, 7, 4] [[2, 5, 3], [4, 4, 1], [1, 7, 3]] [5, 6, 3]

programmers.co.kr

문제 설명

주어진 commands에 따라 array를 자르고 자른 배열의 k번째 숫자를 찾는 문제  

 

문제 풀이

소스코드 : C++  

 

vector의 assign()함수를 이용하여 복사하여 찾아내는 방법 ( assign은 범위를 ( , ] 로 받는다 - >개구간, 폐구간)

#include <iostream>
#include <string>
#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> tmp;
        tmp.assign(array.begin() + commands[i][0] -1, array.begin() + commands[i][1]);
        sort(tmp.begin(), tmp.end());
       answer.push_back(tmp[commands[i][2]-1]);
    }
    return answer;
}

 

for문을 이용하여 직접 복사하는 방법  

#include <iostream>
#include <string>
#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> cmd = commands[i];
        vector<int> tmp;
        int s = cmd[0], e = cmd[1], k = cmd[2];
        for(int j = s-1; j < e; j++)
            tmp.push_back(array[j]);
        sort(tmp.begin(), tmp.end());
        answer.push_back(tmp[k-1]);
    }
    return answer;
}

 

 

소스코드 : Python

 

한 줄 코딩 성공~

def solution(array, commands):
    return [ sorted(array[i[0]:i[1]])[i[2]-1] for i in commands ]

 

728x90
300x250
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.