250x250
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
Tags
- MySQL
- 코테
- the midnight library
- 쉬운 알고리즘 문제
- dfs
- SQL
- 코딩테스트
- 직무면접
- sw expert
- STUDYENGLISH
- readingbook
- 원서읽기
- 백준
- 원서
- English
- 삼성
- 코테 대비
- swexpertacademy
- 완전탐색
- 코테 준비
- 알고리즘
- PyQt
- D4
- nightroutine
- 원서읽자
- englishbook
- BFS
- sw expert academy
- 프로그래머스
- 알고리즘 문제
Archives
- Today
- Total
시나브로
[D3] 9280. 진용이네 주차타워 본문
728x90
차고 같은 경우, 무조건 작은 인덱스 차고부터 써야되니 자료형 vector를 이용해 역순으로 정렬해줘서 사용했다.
대기자 같은 경우, 큐 자료 구조를 이용하여 FIFO을 구현하였다.
#include<stdio.h>
#include<iostream>
#include<queue>
#include<vector>
#include<algorithm>
#include<functional>
using namespace std;
int car_box[101][2] = { 0 };
int car[2001][2] = { 0 };
queue<int> stack;
int price = 0;
int n;
int m;
vector<int> list;
int fill(int index) {
if (!list.empty()) {
car[index][1] = list.back();
car_box[list.back()][1] = index;
price += car_box[list.back()][0] * car[index][0];
list.pop_back();
return 1;
}
else {
if(stack.empty()||stack.front()!=index)
stack.push(index);
}
return 0;
}
int main(void) {
freopen("inp.inp", "r", stdin);
freopen("out.out", "w", stdout);
int tc = 0;
cin >> tc;
for (int p = 0; p < tc; p++) {
cin >> n >> m;
for (int i = 1; i <= n; i++) {
cin >> car_box[i][0];
car_box[i][1] = 0;
list.push_back(i);
}
for (int i = 1; i <= m; i++) {
cin >> car[i][0];
car[i][1] = 0;
}
sort(list.begin(), list.end(), greater<int>());
for (int i = 1; i <= 2*m; i++) {
int index = 0;
cin >> index;
if (index>=0) {
fill(index);
}
else {
index = -index;
car_box[car[index][1]][1] = 0;
list.push_back(car[index][1]);
sort(list.begin(), list.end(), greater<int>());
car[index][1] = 0;
while (!stack.empty()) {
if (fill(stack.front())) {
stack.pop();
}
else {
break;
}
}
}
}
cout << "#"<<p+1<<" "<<price<<endl;
price = 0;
for (int i = 1; i <= n; i++) {
list.pop_back();
}
}
return 0;
}
728x90
'알고리즘 > SW Expert Academy' 카테고리의 다른 글
[D5] 9015. 배열의 분할 (0) | 2020.03.18 |
---|---|
[D3] 9229. 한빈이와 Spot Mart (0) | 2020.03.10 |
[D3] 9317. 석찬이의 받아쓰기 (0) | 2020.03.08 |
8567. 약수의 개수가 많은 수 (0) | 2020.01.07 |
8568. 3으로 나눈 순열 (0) | 2020.01.07 |
Comments