728x90
반응형
https://programmers.co.kr/learn/courses/30/lessons/42587
#include <string>
#include <vector>
#include <queue>
#include <iostream>
using namespace std;
struct Data {
int pri,idx;
};
int solution(vector<int> priorities, int location) {
int answer = 0;
int J = 0;
vector<int>ret;//최종 나오는 순서 저장
queue<Data>q;
for (int i = 0; i < priorities.size(); i++) {
q.push({ priorities[i],i });
}
while (!q.empty()) {
Data J = q.front(); q.pop();// J문서
int size = q.size();//현재 큐 사이즈
int flag = 0;//우선순위 높은 문서 있는지 체크
for (int i = 0; i < size; i++) {
if (J.pri < q.front().pri) {
flag = 1;
}
Data cJ = q.front(); q.pop();
q.push(cJ);
}
if (flag==0) {
ret.push_back(J.idx);// 출력 시키기
}
else {//우선순위가 높은게 있으면 제일 뒤로 보내기
q.push(J);
}
}
for (int i = 0; i < ret.size(); i++) {
if (ret[i] == location) { answer = i+1; break; }
}
return answer;
}
int main(void) {
cout << solution({ 2,1,3,2},2)<<endl;
cout << solution({ 1, 1, 9, 1, 1, 1},0)<<endl;
return 0;
}
이문제는 어떤식으로 구현을 할수 있는지를 잘 생각해야합니다. 저와같이 굳이 구조체를 만들어 사용할 필요는 없지만
좀더 직관성있게 구현 할 수 있다고 생각해서 구조체를써서 큐를 돌리듯이 해서 돌려서 일일이 비교해보고
출력이 가능한것이면 가능한것을 백터에 넣었습니다.
그리고 마지막에 그위치가 어디에 출력되는지 정도만 answer에 저장하여 문제를 풀이 했습니다.
이건 기초라 구현 가능하셔야합니다.
728x90
반응형
'알고리즘 모음집 > New 알고리즘' 카테고리의 다른 글
프로그래머스 k번째 수 (0) | 2020.08.20 |
---|---|
17142 연구소 3 (0) | 2020.08.20 |
17141 연구소2 (0) | 2020.08.19 |
16234 인구이동 (0) | 2020.08.18 |
프로그래머스 기능개발 (0) | 2020.08.13 |
댓글