https://www.acmicpc.net/problem/1700
1700번: 멀티탭 스케줄링
기숙사에서 살고 있는 준규는 한 개의 멀티탭을 이용하고 있다. 준규는 키보드, 헤어드라이기, 핸드폰 충전기, 디지털 카메라 충전기 등 여러 개의 전기용품을 사용하면서 어쩔 수 없이 각종 전
www.acmicpc.net
#include <algorithm>
#include <vector>
#include <iostream>// 입출력 가능하게 하는 헤더
using namespace std;
vector<int> plug, input;
int n, k;
int cnt = 0;
int find_device(int target)
{
int res = 0;
for (int i = 0; i < plug.size(); i++)
if (plug[i] == target)
res = 1;
return (res);
}
void take_out_low_use_device(int out_idx)
{
vector <int> tmp(plug); // 그대로 복사
int low_use_dev = -1;
for (int i = out_idx; i < k && tmp.size() > 1; i++) // 전부 다 돌고, 제일 오래 안쓰는 놈 찾음
{
for (int j = 0; tmp.size() > 1 && j < tmp.size(); j++)
if (input[i] == tmp[j])
tmp.erase(tmp.begin() + j); // tmp 의 바로 또 사용하는 기기 뺌
}
// for (int i = 0; i < tmp.size(); i++)
// cout << tmp[i] << ' ';
for (int i = 0; i < plug.size(); i++)
if (tmp[0] == plug[i])
plug.erase(plug.begin() + i); // 플러그 뺌
cnt++;
}
int main()
{
ios::sync_with_stdio(false),cin.tie(0),cout.tie(0);
cin >> n >> k;
for (int i = 0; i < k; i++)
{
int num;
cin >> num;
input.push_back(num);
}
for (int i = 0; i < k; i++)
{
if (find_device(input[i]) == 0) // 플러그에 꽃힌 디바이스가 아닐때
{
if (plug.size() >= n) // 플러그에 공간이 없을때
take_out_low_use_device(i);
plug.push_back(input[i]); // 꽂음
}
// for (int i = 0; i < plug.size(); i++)
// cout << plug[i] << ' ';
// cout << '\n';
}
cout << cnt;
}
'<algorithm> > 백준' 카테고리의 다른 글
백준 1920 수 찾기 c++ (0) | 2023.09.11 |
---|---|
백준 10816 숫자 카드 2 c++ (0) | 2023.09.11 |
백준 1620 (c++) 나는야 포켓몬 마스터 이다솜 (0) | 2023.04.06 |
백준 7785 (c++) 회사에 있는 사람 (0) | 2023.04.06 |
백준 1744 (c++) 수 묶기 (0) | 2023.03.23 |