[프로그래머스] 프린터

hanturtle·2일 전
0

프로그래머스

목록 보기
4/5

sort로 정렬해서 아주 간단하게 풀어버릴 생각이었다.
중요도가 가장 높은 것을 출력하고 그 뒤로 중요도 높은 것을 출력했어야하기때문 순서를 기억해두고자 it이라는 변수를 사용하였다.

int solution(vector<int> priorities, int location) {
    int answer = 0;
    int it = 0;
    vector<int> v = priorities;
    vector<int> num;
    
    sort(v.begin(),v.end());
    v.erase(unique(v.begin(),v.end()),v.end());
    
    for(int i=0;i<priorities.size();i++){
        if(v.back() == priorities.at(i)){
            it = i;
            break;
        }
    }
    
    int tmp = it;
    while(v.size()){
        for(int i = it;i<priorities.size();i++){
            if(v.back() == priorities.at(i)){
                num.push_back(i);
                tmp = i;
                
            }
        }
        for(int i = 0;i<it;i++){
            if(v.back() == priorities.at(i)){
                num.push_back(i);
                tmp = i;
            }
        }
        v.pop_back();
        it = tmp;
        if(it>priorities.size())
            it-=priorities.size();
        it++;
        
        
    }
    
    for(int i=0;i<num.size();i++){
        answer++;
        if(num.at(i) == location)
            break;
    }
    return answer;
}

처음 소스를 짤 때, while문안에 tmp를 사용하지않았다.
그래서 두번째 for문에서 범위에 오차가 생겼다. 바보😳
그 부분만 수정해주니 성공!!

출처: 프로그래머스 코딩 테스트 연습, https://programmers.co.kr/learn/challenges

0개의 댓글