코딩테스트 준비/프로그래머스

[프로그래머스] - 프로세스(스택/큐) c++

SeoburiFaust 2024. 2. 15. 12:11

문제

https://school.programmers.co.kr/learn/courses/30/lessons/42587

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

접근방법

문제를 보고, 더 쉽게 푸는 방법이 있나 고민 해봤지만, 이게 최선이었다.

문제에서 제시한 내용 그대로 풀었다.

 

코드

#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개 이상 곂쳐 써도 된다는 확신을 가지는 것도 실력이다.

 

시간 복잡도와 공간 복잡도를 고민하는 시간을 좀 더 가져보자.