기타등등/알고리즘 기록

[C++] 삽입정렬 - Least Recently Used(카카오캐시 변형)

CodeJB 2021. 7. 27. 18:21
삽입정렬 : 이전 값들과 비교하여 한 칸씩 뒤로 옮기고 삽입한다.

#include <iostream>

int main() {
    int S,N,i,j,tmp,idx;
    int cnt[100];
    
    scanf("%d %d",&S,&N);
    
    int mem[S];
    
    mem[0] = 0;
    
    for(i = 0; i < N; i++){
        scanf("%d",&tmp);
        
        if(mem[0] != 0){
            for(j = i; j >= 0; j--){
                if(tmp == mem[j])
                    mem[j] = mem[j-1];
                else
                    mem[j+1] = mem[j];
            }
        }else
            printf("!");
        mem[0] = tmp;
    }
    
    for(i = 0; i < S; i++){
        printf("%d",mem[i]);
    }
    return 0;
}
  • 삽입정렬의 특성을 이용하였다.
  • 입력값(기준)을 잡아서 한칸씩 인덱스를 뒤로 밀어내는 특성을 이용한다.
  • 뿐만 아니라, 배열에서 자신보다 앞의 값들과 비교가 필요한 경우에서도 사용한다.

 

https://www.inflearn.com/course/%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98/dashboard