Written on
·
239
0
#include <stdio.h>
#include <algorithm>
#include <vector>
using namespace std;
void printMemory(vector<int> memory){
for(int idx=0; idx<memory.size(); idx++){
printf("%d ",memory[idx]);
}
printf("\n");
}
int main(){
int s, workSize, memoryIdx = 0;
int workIdx = 0, foundCnt = 0;
int cnt=1;
scanf("%d",&s);
vector<int> memory(s);
scanf("%d",&workSize);
vector<int> work(workSize);
for(int i=0; i<workSize; i++){
scanf("%d",&work[i]);
}
memory[0]=work[workIdx];//초기단계
workIdx++;
//printMemory(memory);
while(cnt!=workSize) {
for(int i=0; i<s; i++) {
if(cnt!=workSize) {
if(memory[i] == work[workIdx]) {
memoryIdx = i;
foundCnt++;
break;
}
}
}
if(foundCnt == 1) {
//메모리내 work와 동일한게 있는 경우
if(cnt!=workSize) {
for(int i=memoryIdx-1; i>=0; i--) {
memory[i+1]=memory[i];
}
memory[0]=work[workIdx];
workIdx++;
cnt++;
foundCnt=0;
}
} else {
//메모리내 work와 동일한게 없는 경우
if(cnt!=workSize) {
for(int i=memory.size()-1; i>0; i--) {
memory[i]=memory[i-1];
}
memory[0]= work[workIdx];
workIdx++;
cnt++;
} else {
break;
}
}
//printMemory(memory);
}
printMemory(memory);
return 0;
}
Answer 2
0
0