CPP 문제풀이/프로그래머스
프린터
hjc_
2020. 8. 2. 20:07
*max_element(priorities.begin(),priorities.end())
//--- 내 풀이
#include <algorithm>
#include <string>
#include <vector>
#include <iostream>
using namespace std;
int solution(vector<int> priorities, int location) {
int i, answer = 0;
int size = priorities.size();
while(size != 0){
//제일 큰 수인지 검사
int Emax = *max_element(priorities.begin(),priorities.end());
int first = priorities[0];
//제일 큰 수라면 pop, answer++
if(first == Emax){
priorities.erase(priorities.begin());
++answer;
if(location==0) break;
else location-- ;
}
//아니면 뒤로 넣기
else{
priorities.erase(priorities.begin());
priorities.push_back(first);
if(location==0) {
location = size-1;
}
else location--;
}
size = priorities.size(); // <--- 마지막에 다시 사이즈 설정!
}
//location인덱스일때의 answer 출력
return answer;
}
#include <string>
#include <vector>
#include <iostream>
using namespace std;
int solution(vector<int> priorities, int location) {
int answer = 0;
int size = priorities.size();
while(size != 0){
bool isCheck = false;
int first = priorities[0];
for(int i = 1; i < priorities.size(); i++){
int tmp = priorities[i];
if(first < tmp) {
isCheck = true;
break;
}
}
if(isCheck){ //첫 번째 원소보다 큰 수가 존재하는 경우
priorities.erase(priorities.begin());
priorities.push_back(first);
if(location == 0) location = priorities.size() - 1;
else location--;
}
else { //첫 번째 원소가 가장 큰 경우
priorities.erase(priorities.begin());
++answer;
if(location == 0) break;
else location--;
}
size = priorities.size();
}
return answer;
}