#1. 문제
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
#2. 풀이
1. 큐
[자료 구조]#0_선형 자료구조
[자료 구조] #0_선형 자료구조 선형 자료구조에 대해 알아보겠습니다. Overview 개념 스택 큐 원형 큐 덱 배열 벡터 리스트 이중 연결 리스트 #0. 개념 1. 선형 자료구조? [정의] : 선형 자료구조는 데
webddevys.tistory.com
큐는 선입선출 방식으로 동작하는 선형 자료구조입니다. 큐는 동일한 형식의 데이터 항목을 목록의 한쪽 끝으로 삽입하며, 다른 한쪽에선 삭제 작업을 수행합니다.
2. 우선순위 큐
[자료구조]#7_우선순위 큐
[자료구조]#7_우선순위 큐 우선순위 큐 자료구조에 대해 알아보겠습니다. Overview 개념 구현 참고 #0. 개념 1. 우선순위 큐 정의 : 우선순위 큐(Priority Queue)는 원소들이 우선순위에 따라 정렬된 연결
webddevys.tistory.com
우선순위 큐는 원소들이 우선순위에 따라 정렬된 연결 자료구조로, 원소의 삽입 순서와 무관하게 우선순위가 가장 높은 원소가 먼저 나오는 특징을 갖고 있습니다. 우선순위 큐는 삽입/삭제 수행 시 내부적으로 정렬 작업을 수행하여 항상 정렬된 상태를 유지합니다. 이를 위해, 우선순위 큐는 일반적으로 '힙' 자료구조를 통해 구현합니다.
3. 가장 우선순위 높은 프로세스가 나올 때까지 기다리자!)
- 먼저, pair 형식(프로세스의 위치/Index, 프로세스의 우선순위)형식의 큐와 각 프로세스의 우선순위 번호를 관리하는 우선순위 큐를 하나 선언하고, 구성합니다.
- 우선순위 큐를 순회하며, 우선순위가 가장 높은 프로세스를 찾을 때까지 큐의 pop연산+push연산을 반복해 줍니다. 이때, 우선순위 큐의 top(현재 우선순위가 가장 높은)과 큐의 front(현재 차례가 온 프로세스)의 우선순위가 동일한 와중에, 우리가 찾고자 하는 location 값 또한 해당 값들과 일치하는 삼위일체 발생 시 그 순서를 출력합니다!
#3. 코드
#include <string>
#include <vector>
#include <queue>
using namespace std;
int solution(vector<int> priorities, int location) {
priority_queue<int, vector<int>> pq;
queue<pair<int, int>> q;
int answer = 0;
int order = 1;
for(int i=0; i < (int)priorities.size(); ++i)
{
pq.push(priorities[i]);
q.push({i, priorities[i]});
}
while(!pq.empty())
{
int prior = pq.top();
pq.pop();
while(!q.empty() && q.front().second != prior)
{
q.push(q.front());
q.pop();
}
if(q.front().first == location)
{
answer = order;
break;
}
q.pop();
order++;
}
return answer;
}
'문제 풀이 > Programmers 문제 풀이' 카테고리의 다른 글
[Programmers]#Level2_[1] 뉴스 클러스터링, map 컨테이너 (0) | 2024.04.08 |
---|---|
[Programmers]#Level2_피로도, 완전 탐색, DFS, 깊이 우선 탐색, 백트래킹 (0) | 2024.04.08 |
[Programmers]#Level2_기능 개발, 스택, ceil(), 실수와 정수의 혼용 연산 (0) | 2024.03.21 |
[Programmers]#Level2_캐시, unordered_map 컨테이너, LRU, transform 알고리즘 (0) | 2024.03.21 |
[Programmers]#Level2_땅 따먹기, DP (0) | 2024.03.21 |
#1. 문제
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
#2. 풀이
1. 큐
[자료 구조]#0_선형 자료구조
[자료 구조] #0_선형 자료구조 선형 자료구조에 대해 알아보겠습니다. Overview 개념 스택 큐 원형 큐 덱 배열 벡터 리스트 이중 연결 리스트 #0. 개념 1. 선형 자료구조? [정의] : 선형 자료구조는 데
webddevys.tistory.com
큐는 선입선출 방식으로 동작하는 선형 자료구조입니다. 큐는 동일한 형식의 데이터 항목을 목록의 한쪽 끝으로 삽입하며, 다른 한쪽에선 삭제 작업을 수행합니다.
2. 우선순위 큐
[자료구조]#7_우선순위 큐
[자료구조]#7_우선순위 큐 우선순위 큐 자료구조에 대해 알아보겠습니다. Overview 개념 구현 참고 #0. 개념 1. 우선순위 큐 정의 : 우선순위 큐(Priority Queue)는 원소들이 우선순위에 따라 정렬된 연결
webddevys.tistory.com
우선순위 큐는 원소들이 우선순위에 따라 정렬된 연결 자료구조로, 원소의 삽입 순서와 무관하게 우선순위가 가장 높은 원소가 먼저 나오는 특징을 갖고 있습니다. 우선순위 큐는 삽입/삭제 수행 시 내부적으로 정렬 작업을 수행하여 항상 정렬된 상태를 유지합니다. 이를 위해, 우선순위 큐는 일반적으로 '힙' 자료구조를 통해 구현합니다.
3. 가장 우선순위 높은 프로세스가 나올 때까지 기다리자!)
- 먼저, pair 형식(프로세스의 위치/Index, 프로세스의 우선순위)형식의 큐와 각 프로세스의 우선순위 번호를 관리하는 우선순위 큐를 하나 선언하고, 구성합니다.
- 우선순위 큐를 순회하며, 우선순위가 가장 높은 프로세스를 찾을 때까지 큐의 pop연산+push연산을 반복해 줍니다. 이때, 우선순위 큐의 top(현재 우선순위가 가장 높은)과 큐의 front(현재 차례가 온 프로세스)의 우선순위가 동일한 와중에, 우리가 찾고자 하는 location 값 또한 해당 값들과 일치하는 삼위일체 발생 시 그 순서를 출력합니다!
#3. 코드
#include <string>
#include <vector>
#include <queue>
using namespace std;
int solution(vector<int> priorities, int location) {
priority_queue<int, vector<int>> pq;
queue<pair<int, int>> q;
int answer = 0;
int order = 1;
for(int i=0; i < (int)priorities.size(); ++i)
{
pq.push(priorities[i]);
q.push({i, priorities[i]});
}
while(!pq.empty())
{
int prior = pq.top();
pq.pop();
while(!q.empty() && q.front().second != prior)
{
q.push(q.front());
q.pop();
}
if(q.front().first == location)
{
answer = order;
break;
}
q.pop();
order++;
}
return answer;
}
'문제 풀이 > Programmers 문제 풀이' 카테고리의 다른 글
[Programmers]#Level2_[1] 뉴스 클러스터링, map 컨테이너 (0) | 2024.04.08 |
---|---|
[Programmers]#Level2_피로도, 완전 탐색, DFS, 깊이 우선 탐색, 백트래킹 (0) | 2024.04.08 |
[Programmers]#Level2_기능 개발, 스택, ceil(), 실수와 정수의 혼용 연산 (0) | 2024.03.21 |
[Programmers]#Level2_캐시, unordered_map 컨테이너, LRU, transform 알고리즘 (0) | 2024.03.21 |
[Programmers]#Level2_땅 따먹기, DP (0) | 2024.03.21 |