https://programmers.co.kr/learn/courses/30/lessons/42587
문제가 누가봐도 큐를 사용해서 풀어야하는 문제였다.
- vector의 max_element를 잘 사용하면 빠르게 풀리는 문제였다.
-*max_element를 사용하면 max값을, max_element를 이용하면 max의 index를 얻어올 수 있다.
max를 찾을때마다 그 index에 대한 값을 -1로 바꿔주면서 남은 것들의 max값을 찾아갔다.
-que는 location비교를 위해 pair<int,int> 형식으로 저장해주었다.
#include <string>
#include <vector>
#include <queue>
#include <algorithm>
using namespace std;
int solution(vector<int> priorities, int location) {
int answer = 0;
int num;
int num_index;
int max_index;
int index=0;
queue<pair<int,int>> que;
for(int i=0;i<priorities.size();i++){
que.push(make_pair(index+i,priorities[i]));
}
while(!que.empty()){
num=que.front().second;
num_index=que.front().first;
if(num==*max_element(priorities.begin(),priorities.end())){
max_index=max_element(priorities.begin(),priorities.end())-priorities.begin();
priorities[max_index]=-1;
que.pop();
answer++;
if(num_index==location){
return answer;
}
}
else{
que.pop();
que.push(make_pair(num_index,num));
}
}
return answer;
}
'코테 준비-문제풀기' 카테고리의 다른 글
Codility - Lessons- BinaryGap [Java] //java 문자열 앞으로 붙이기 (0) | 2020.09.23 |
---|---|
프로그래머스 - 해시/ 전화번호 목록 JAVA (0) | 2020.09.12 |
계단 오르기 문제 - 재귀함수 사용 (0) | 2020.07.29 |
백준 2493 탑 c++ (0) | 2020.07.29 |
교내 코딩테스트 강의 1주차 (0) | 2020.07.08 |