1700 : 멀티탭 스케줄링

풀이

가장 나중에 사용할 것 부터 뽑아주면 된당

코드

#include <stdio.h>
#include <vector>
using namespace std;

int n, k, ans;
int ord[101];
vector<int> tab;

int main() {
	scanf("%d %d", &n, &k);
	for (int i = 0; i < k; i++) {
		scanf("%d", &ord[i]);
	}

	for (int i = 0; i < k; i++) {
        int flag = 0;
		for (int t = 0; t < tab.size(); t++) {
			if (tab[t] == ord[i]) flag = 1;
		}
		if (flag) continue;
        
		if (tab.size() < n) {
			tab.push_back(ord[i]);
			continue;
		}

		int maxd = 0, maxt = 0;
		for (int t = 0; t < tab.size(); t++) {
			int d = 1e9;
			for (int j = i + 1; j < k; j++) {
				if (tab[t] == ord[j]) {
					d = j;
					break;
				}
			}
			if (maxd < d) {
				maxd = d, maxt = t;
			}
		}
		
		tab[maxt] = ord[i];
		ans++;
	}

	printf("%d", ans);

	return 0;
}

아무말

백준, 백준 온라인 저지, BOJ, Baekjoon Online Judge, C, C++, 씨, 씨쁠쁠, JAVA, algorithm, 자바, 알고리즘, 자료구조, 문제, 문제 풀이, 풀이

wookje.kwon's profile image

wookje.kwon

2018-03-07 17:39

Read more posts by this author