• 카테고리

    질문 & 답변
  • 세부 분야

    알고리즘 · 자료구조

  • 해결 여부

    미해결

문제의 의도..

21.06.17 21:30 작성 조회수 180

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;
}

답변 2

·

답변을 작성해보세요.

0

안녕하세요^^

소스파일과 거의 같은 코드입니다. 잘 하셨습니다.

0

김영우님의 프로필

김영우

질문자

2021.06.17

돌려보면 정답 나옵니다.. 근데 소스파일에 비해서 너무 코드가 길게 나왔는데 이렇게 어거지로 푸는게 맞나요?