인프런 커뮤니티 질문&답변
문제의 의도..
작성
·
270
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;
}퀴즈
57%나 틀려요. 한번 도전해보세요!
선택 정렬(Selection Sort) 알고리즘은 각 단계에서 어떤 작업을 수행하여 배열을 정렬하나요?
인접한 두 요소를 비교하여 필요시 교환합니다.
정렬되지 않은 부분에서 가장 작은(또는 큰) 값을 찾아 정렬된 부분의 올바른 위치로 옮깁니다.
현재 요소를 이미 정렬된 부분 배열의 적절한 위치에 삽입합니다.
배열을 분할하고 각 부분을 재귀적으로 정렬한 후 병합합니다.





