문제
https://school.programmers.co.kr/learn/courses/30/lessons/42587
접근방법
문제를 보고, 더 쉽게 푸는 방법이 있나 고민 해봤지만, 이게 최선이었다.
문제에서 제시한 내용 그대로 풀었다.
코드
#include <string>
#include <vector>
#include <deque>
using namespace std;
int solution(vector<int> priorities, int location) {
int answer = 0;
deque<pair<int, int> > q;
for (int i=0;i<priorities.size();i++) {
q.push_back(make_pair(i, priorities[i]));
}
while(1) {
bool flag = false;
for (int j=0;j<q.size();j++) {
if (q.front().second < q[j].second) flag = true;
}
if (flag) {
q.push_back(q.front());
} else answer++;
if (!flag && q.front().first == location) break;
q.pop_front();
}
return answer;
}
개선할 점
항상 반복문을 2개 이상 곂쳐 쓸 때는 망설이게 된다.
문제를 보고나서 반복문 2개 이상 곂쳐 써도 된다는 확신을 가지는 것도 실력이다.
시간 복잡도와 공간 복잡도를 고민하는 시간을 좀 더 가져보자.
'코딩테스트 준비 > 프로그래머스' 카테고리의 다른 글
[프로그래머스 LV2] - 주식가격 c++ (0) | 2024.02.17 |
---|---|
[프로그래머스 LV2] - 다리를 지나는 트럭(스택/큐) c++ (1) | 2024.02.15 |
[프로그래머스] - H-index(정렬) c++ (0) | 2024.02.15 |
[프로그래머스] - 가장 큰 수(정렬) c++ (0) | 2024.02.14 |
[프로그래머스] - k번째 수(정렬) c++ (1) | 2024.02.14 |