본문 바로가기

queue

(4)
Programmers / Stack, Queue / 프린터 https://www.welcomekakao.com/learn/courses/30/lessons/42587 1. (위치, 중요도) 형태로 구성된 queue를 생성 2. queue의 첫번째 항목이 우선순위가 가장 높은 항목이면 큐에서 빼고 출력된 항목수를 1 증가 시킨다. 2-1. 만약 출력된 항목이 우리가 찾고자 하는 항목이라면 답을 return 한다. 2-else. 우선순위가 가장 높은 항목이 아닌 경우 큐의 맨뒤로 이동시킨다. #include #include #include typedef struct NODE { int idx; int prior; }node; using namespace std; // 현재 큐에서 우선순위가 가장 높은 항목인지 검사하는 함수 ..
Programmers / Stack, Queue / 다리를 지나는 트럭 https://www.welcomekakao.com/learn/courses/30/lessons/42583 1. (트럭무게, 도착시간)의 쌍을 만들어서 각 트럭을 관리하고, 트럭들이 추가되고 나가고 할 수 있는 queue을 만든다. 2. 먼저, 다리에 있는 트럭 중 나갈 시간이 된 트럭을 큐에서 pop 한다. 3. 대기 중인 트럭 중 다음 들어갈 차례인 트럭이 다리에 올라갈 수 있다면, 추가시키고 현재시간을 1 증가 시킨다. 3-else. 들어갈 수 없다면, 다리에서 가장 먼저 올라간 트럭의 도착시간으로 현재시간을 이동시킨다. -> 이 경우를 설정해주지 않으면 시간은 1씩 계속 증가해야하므로 시간초과가 예상된다. #include #include #include #..
Programmers / Stack, Queue / 기능개발 https://www.welcomekakao.com/learn/courses/30/lessons/42586 1. 남은 시간을 계산하여 배열로 만든다. 2. 현재 인덱스를 기준으로 현재 남은 시간이하인 연속된 항목들은 한 묶음으로 볼 수 있다. ex) 남은 시간이 [7, 3, 6, 2, 9, 5] 인 경우, 0번 인덱스를 기준으로 {7, 3, 6, 2}이 한묶음이 된다. 3. 한 묶음을 구성하였을 때, 그 항목의 수가 답이 되므로 answer에 추가한다. ex) 위의 예시의 경우 4를 추가한다. 4. 한 묶음이 구성된 이후 인덱스가 다음 기준 인덱스가 된다. ex) 위의 예시의 경우 4가 다음 인덱스이다. 5. 모든 항목을 다 처리할 때 까지 묶음을 계속해서 만들고 처리한다. ..
Programmers / Stack, Queue / 주식가격 https://www.welcomekakao.com/learn/courses/30/lessons/42584 1. 자신보다 작은 값이 나올 때 까지 계속해서 stack에 push 2. 작은 값이 나왔을 때, 그 값보다 큰 값들은 시간을 계산하고 전부 pop 3. 마지막 항목까지 했을 때, 스택에 남은 항목들에 대한 처리가 필요하다. #include #include #include using namespace std; vector solution(vector prices) { vector answer(prices.size()); stack s; // 제일 처음 항목은 stack에 넣기 s.push(0); int size = prices.size(); for (int ..