본문 바로가기

c++/Baekjoon Online

백준 1700 : 멀티탭 스케줄링 C++

https://www.acmicpc.net/problem/1700

 

1700번: 멀티탭 스케줄링

기숙사에서 살고 있는 준규는 한 개의 멀티탭을 이용하고 있다. 준규는 키보드, 헤어드라이기, 핸드폰 충전기, 디지털 카메라 충전기 등 여러 개의 전기용품을 사용하면서 어쩔 수 없이 각종 전

www.acmicpc.net

 

풀이

1.  새로운 전기용품을 충전하고 싶을때 3가지 경우가 있다

1) 이미 꽂혀 있는 경우

 -> PASS

2) 꽂혀있지는 않지만, 멀티탭에 빈자리가 있음

-> 빈자리에다가 꼽는다

3) 자리가 없다

-> 이 경우가 코딩 필요

 

2. 현재 멀티탭에 꼽혀있는 전자제품 중에 가장 오랫동안 사용 안하는 걸 찾으면 된다.

 

 

#include <iostream>
#include <vector>
#include <algorithm>
#include <queue>
using namespace std;
int n, k;
int schedule[101];
int multiTap[101] = { 0, };

int main() 
{
    int answer = 0;
    cin >> n >> k;
    for (int i = 0; i < k; i++) 
        cin >> schedule[i];

    for (int i = 0; i < k; i++)
    {
        bool flag = false;
        //1) 이미 꽂혀 있다면 pass
        for (int j = 0; j < n; j++)
        {
            if (multiTap[j] == schedule[i])
            {
                flag = true;
                break;
            }
        }
        if (flag == true)
            continue;

        //2)빈칸이 있으면 꼽아
        for (int j = 0; j < n; j++)
        {
            if (multiTap[j] == 0)
            {
                multiTap[j] = schedule[i];
                flag = true;
                break;
            }
        }
        if (flag == true)
            continue;


        //3) 빈칸 필요
        int last_need = -1; // 가장 늦게 다가올 차례
        int index = -1; // 뺄 멀티탭 자리
        for (int j = 0; j < n; j++)
        {
            int tmp = 0;
            for (int t = i+1;t < k; t++)
            {
                if (schedule[t] == multiTap[j])
                {
                    break;
                }
                tmp++;
            }
            if (tmp > last_need)
            {
                last_need = tmp;
                index = j;
            }
        }

        multiTap[index] = schedule[i];
        answer++;

    }
    cout << answer << endl;
}

'c++ > Baekjoon Online' 카테고리의 다른 글

백준 1507 : 궁금한 민호 C++  (0) 2021.06.27
백준 1946 : 신입사원 C++  (0) 2021.06.26
백준 2579 : 계단 오르기 C++  (0) 2020.11.20
백준 : 다리 만들기 2 c++  (0) 2020.11.19
백준 : 기타줄 C++  (0) 2020.11.18