[프로그래머스] 프린터 문제 풀이(스택/큐 Lv.2) - C++
2021. 12. 6. 05:00ㆍ네카라쿠배 취준반 - 프로그래머스 문제 풀이
0. 자세한 설명은 YouTube 영상으로
1-1. 구조체 + Queue를 활용한 Solution
#include <iostream>
#include <string>
#include <vector>
#include <queue>
#include <algorithm>
using namespace std;
struct PrintJob{
int priority;
int location;
};
int solution(vector<int> priorities, int location)
{
queue<PrintJob> printer; //queue에 index 삽입.
for(int i=0; i<priorities.size(); i++){
PrintJob job;
job.location = i;
job.priority = priorities[i];
printer.push(job);
}
int turn = 0;
while (!printer.empty()) {
// 2. 0번을 꺼내서 max priority가 이나면 다시 끝에 넣기
PrintJob job = printer.front();
printer.pop();
if (job.priority != *max_element(priorities.begin(), priorities.end())) {
printer.push(job);
} else {
turn++;
// 3. max Priority가 맞다면 내가 찾는 job이 맞는지 확인하기
if (job.location == location)
break;
priorities[job.location] = 0;
}
}
return turn;
}
int main(void)
{
vector<int> priorities = {2, 1, 3, 2};
cout << solution(priorities, 2);
return 0;
}
1-2. Queue만 활용한 Solution
#include <iostream>
#include <string>
#include <vector>
#include <queue>
#include <algorithm>
using namespace std;
int solution(vector<int> priorities, int location)
{
queue<int> printer; //queue에 index 삽입.
for(int i = 0; i< priorities.size(); i++)
printer.push(i);
int turn = 0;
while (!printer.empty()) {
// 2. 0번을 꺼내서 max priority가 이나면 다시 끝에 넣기
int idx = printer.front();
printer.pop();
if (priorities[idx] < *max_element(priorities.begin(), priorities.end())) {
printer.push(idx);
} else {
turn++;
// 3. max Priority가 맞다면 내가 찾는 job이 맞는지 확인하기
if (location == 0)
break;
priorities[idx] = 0;
}
location--;
if (location < 0)
location = printer.size() - 1;
}
return turn;
}
int main(void)
{
vector<int> priorities = {2, 1, 3, 2};
cout << solution(priorities, 1);
return 0;
}
'네카라쿠배 취준반 - 프로그래머스 문제 풀이' 카테고리의 다른 글
[프로그래머스] 프린터 문제 풀이(스택/큐 Lv.2) - 파이썬 python (0) | 2021.12.13 |
---|---|
[프로그래머스] 체육복 문제 풀이(탐욕법 Greedy Lv.1) - java 자바 (0) | 2021.12.08 |
[프로그래머스] 프린터 문제 풀이(스택/큐 Lv.2) - java 자바 (0) | 2021.12.01 |
[2021 카카오 코딩테스트] 신규 아이디 추천 - C++ (0) | 2021.11.29 |
[2021 카카오 코딩테스트] 신규 아이디 추천(문자열, String Lv. 1) - java 자바 (0) | 2021.11.24 |