반응형
#include <string>
#include <vector>
#include <iostream>
#include <algorithm>
#include <queue>
#include <stack>
using namespace std;
int solution(vector<int> priorities, int location) {
int answer = 0;
int cnt=0;
queue<pair<int,int>>q;
vector<int>vec_num;
int idx;
for(int i=0;i<priorities.size();i++) //문서의 중요도를 다른 vector에 저장
vec_num.push_back(priorities[i]);
sort(vec_num.begin(),vec_num.end()); //중요도를 오름차순으로 정렬
for(int i=0;i<priorities.size();i++)
{
int temp = priorities[i];
q.push({i,temp}); //문서의처음위치, 문서의 중요도 push
}
idx = vec_num.size()-1; //오름차순 정렬된 vector에 마지막 인덱스, 가장 높은 중요도
while(!q.empty())
{
if(q.front().second ==vec_num[idx]) //queue의 front의 중요도와 현재 중요도와 일치할 경우
{
if(q.front().first==location) //요청한 문서인지 확인
{
cnt++; //순서증가후 종료
break;
}
else
{
q.pop(); //아닌경우, queue에서 삭제
idx--; //다음중요도로 이동을 위해 idx감소
cnt++; //순서증가
}
}
else if(q.front().second != vec_num[idx]) //현재 queue의 front와 중요도가 일치하지않은 경우
{
pair<int,int> x = q.front(); //삭제 후 다시 push를 통해서 현재 front값을 맨뒤로 이동
q.pop();
q.push(x);
}
}
answer = cnt;
return answer;
}
후기
금방 풀긴했지만 처음에 틀렸을때 이유를 몰랐다. 다시 문제를 읽어보니 문제를 잘못이해했다.
내가 이해한 내용: 가장 중요도 높은 문서를 찾아서 높은문서를 시작으로 queue에서 위치 확인 -> 테스트케이스는 맞지만 정확도에서 많이틀린다.
실제 문제 내용: 가장 높은 문서를 찾아서 front로 확인한 후 다시 전체 문서중 다음으로 중요한 문서를 front로 가져와서 확인을 반복
반응형
'Programming > Programmers' 카테고리의 다른 글
[프로그래머스] 경주로 건설 (c++) (2020카카오인턴십) (0) | 2022.03.31 |
---|---|
[프로그래머스] 여행경로 (c++) (dfs) (0) | 2022.03.30 |
프로그래머스 소수찾기 [c++] (0) | 2022.03.23 |
프로그래머스 모의고사 c++ (0) | 2022.03.23 |
프로그래머스 거리두기확인하기 c++ 2021 카카오 채용연계형 인턴십 (0) | 2022.03.21 |