알고리즘119 [프로그래머스] 이중우선순위 c++ 풀이 내림차순으로 정렬되어 최댓값부터 나오는 q 오름차순으로 정렬되어 최솟값부터 나오는 q2 최댓값을 삭제할땐 q에서 pop해주고, 최솟값을 삭제할때 q2에서 pop해준다. 들어온 횟수와 삭제된 횟수가 같다면 q와 q2를 모두 비워준다. (이미 모든 원소가 삭제된 것이므로) #include #include #include #include using namespace std; vector solution(vector operations) { vector answer; int cnt = 0; priority_queueq; priority_queueq2; int re_cnt=0; for(auto op : operations){ if(op[0]=='I'){ cnt++; q.push(stoi(op.substr(2.. 2024. 1. 16. [프로그래머스] 디스크 컨트롤러 c++ 풀이 현재 시각 기준에서 작업시간이 제일 작은것을 수행하는 것이 총 수행시간에서 이득이다. 1.우선순위큐를 통해 업무시간, 시작시간 순으로 정렬한다. 2. 현재시각에서 처리할수 있는 작업이라면 처리한다. 3.현재 시각에서 처리할 수 없는 작업이라면 다른 큐에 넣어준다. 4. 모든 큐를 검토했을때 시작할 수 있는 큐가 없다면 시간을 +1 해준다. 5. 2 이후에 for문을 나왔다면 다른큐에 있던 작업들을 원래 큐에 다시 담아준다. #include #include #include #include using namespace std; //현재 실행할 수 있는 작업중에 제일 업무시간이 작은 작업을 수행한다. //1. 업무시간 순으로 정렬 //2. 현재 시간과 비교 priority_queue q; priority.. 2024. 1. 14. [프로그래머스] 주식가격 c++ 풀이 가격이 떨어지지 않은 기간을 고르면 되는 문제였다. 2중 for문을 사용해 가격이 떨어지는 순간까지 초를 세서 answer에 넣어주었다. #include #include using namespace std; vector solution(vector prices) { vector answer; int cnt=0; for(int i = 0 ;iprices[i]){ answer[s.top()] = i-s.top(); s.pop(); } for문이 끝났을때 스택에 가격의 인덱스가 남아있다면 한번도 가격이 떨어지지 않았다는 뜻으므로 가격을 계산해서 넣어준다. while(!s.empty()){ answer[s.top()] = size-s.top()-1; s.pop(); } 2024. 1. 11. [프로그래머스] 다리를 지나는 트럭 c++ https://school.programmers.co.kr/learn/courses/30/lessons/42583# 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 처음에 반복문을 i번째 트럭을 기준으로 돌렸다. 그러니까 초마다 트럭이 지나갔는지 체크하기도 어렵고 무게를 갱신시켜주기도 복잡해서 i를 초로 잡고 반복문을 돌렸다. 풀이 i : i초인 상태에서 i+1초가 될때를 얘기함 ex) 5초인 상태에서 6초가 될때 queue bridge : 다리위의 트럭이 있는지 여부를 저장 다리길이 4, 무게 10키로 제한, 트럭 7 4 5 6 ex) 다리 끝 (큐 앞).. 2024. 1. 8. 이전 1 ··· 4 5 6 7 8 9 10 ··· 30 다음