Write-Up/Algorithm

프로그래머스 - K번째 수

NONE_31D 2019. 3. 23. 15:34

#프로그래머스 #Programmers


C++

#include <string> #include <vector> #include<iostream> using namespace std; vector<int> solution(vector<int> array, vector<vector<int>> commands) { vector<int> answer; vector<int>tmp; int i, j, start, end, a, b, temp, idx, vsize; for (i = 0; i<commands.size(); i++) { start = commands[i][0]-1; end = commands[i][1]-1; idx = commands[i][2]-1; cout <<">>"<< start << ":" << end << ":" << idx << endl; for (j = start; j <= end; j++) { //배열 잘라서 tmp 벡터 배열에 넣넣 tmp.push_back(array[j]); } for (a = tmp.size()-1; a > 0; a--) {//여기서 정렬 알고리즘 사용 for (b = 0; b < a; b++) { if (tmp[b] > tmp[b + 1]) { temp = tmp[b]; tmp[b] = tmp[b + 1]; tmp[b + 1] = temp; } } } answer.push_back(tmp[idx]); vsize = tmp.size(); for (a = 0; a < vsize; a++) { tmp.pop_back(); } } return answer; }

프로그래머스는 별 일이 없는 한 <iostream> 헤더를 사용할 일이 없는데, 이와 관련된 구문이 있는 건 자체 디버깅을 위해 넣어놓고 빼는걸 까먹은겁니다(...

출력이 적은 경우는 괜찮은데 많은 경우 출력값이 너무 크다고 프로그래머스에서 까이니 채점하기 전에 iostream 관련 구문 싹 삭제하고 채점하는게 좋다고 생각합니다

문제 자체가 간단해서 위에 주석 두줄 있는걸로 충분히 해석 가능할 것 같고

중간에 정렬 알고리즘 쓰긴 했는데 그냥 sort 써도 큰 차이 없을듯

어디선가 sort 함수가 퀵정렬이라는걸 들은 적이 있는데 이거 한번 뜯어보고 싶은 생각(만)있습니다

아 마지막에 tmp.pop_back()은 tmp배열 다시 쓰려고 그랬던건데 erase 였나 그냥 싹 미는 함수 써도 괜찮을 듯 근데 erase랑 pop_back이랑 확실히 데이터 참조 문제가 차이가 나긴 해서 pop_back이 정신건강에 (나중에) 좋을 수도


'Write-Up > Algorithm' 카테고리의 다른 글

프로그래머스 - 소수의 합  (0) 2019.03.23
프로그래머스 - 완주하지 못한 선수  (0) 2019.03.23
프로그래머스 - 모의고사  (0) 2019.03.23
프로그래머스 - 스킬트리  (0) 2019.03.23