본문 바로가기

알고리즘/프로그래머스

[Lv1] K번째 수(C++)

1. 문제

programmers.co.kr/learn/courses/30/lessons/42748

 

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

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

programmers.co.kr

2. 접근 방법

1) array에 있는 값들을 -> 자른 후 -> 정렬하여 -> K번째 수를 구하여 answer에 넣는 단순 구현 문제

=> command[i]에 주어진 세 값(i,j,k)를 사용하여 array[i]~array[j]까지 범위만 복사하여 -> 정렬 후 -> K-1번째 값을 구함

2) 해당 문제는 assign함수를 알면 쉽게 풀 수 있었음

3. 실수했던 부분 & 처음 알았던 부분

* assign함수 

1) v.assign(N, "값")  : 이전에 있었던 원소들은 모두 삭제하고, 인자로 받은 새로운 내용을 집어 넣는다. N개만큼 "값"을 넣음

 
2) v. assign( iterator first, iterator last) => v[first]~v[last-1], 즉 last의 직전까지만 저장

ex. v.assign(v.begin() + 1, v.begin() +5) => v[1] ~ v[4] 값만 남김

4. 코드

더보기
#include <string>
#include <vector>
#include <algorithm>
using namespace std;

vector<int> solution(vector<int> array, vector<vector<int>> commands) {
    vector<int> answer;
    int num = commands.size(); 
    for( int i = 0 ; i < num; i++) {
        vector<int> ithV = commands[i];
        vector<int> subArray;
        subArray.assign(array.begin() + ithV[0] - 1, array.begin() + ithV[1] );
      sort(subArray.begin(), subArray.end());
      answer.push_back(subArray[ithV[2]-1]);
    }
    return answer;
}

'알고리즘 > 프로그래머스' 카테고리의 다른 글

[Lv2]소수찾기(C++)  (0) 2020.10.23
[Lv2]가장 큰 수(C++)  (0) 2020.10.17
[Lv2]구명보트(C++)  (0) 2020.10.17
[Lv2]삼각달팽이(C++)  (0) 2020.10.17
[Lev.2] 수식 최대화(C++)  (0) 2020.07.03