ALGORITHM

[JAVA] 알고리즘 : 정렬- LRU(캐시, 카카오변형)

연듀 2022. 7. 26. 09:23

 

예시 입력

5 9
1 2 3 2 6 2 3 5 7

import java.util.*;

public class Main {
    public int[] solution(int size, int n, int[] arr){
        int[] cache=new int[size];

        for(int x : arr){
            int pos=-1; // 인덱스
            for(int i=0; i<size; i++){
                if(x==cache[i]) pos=i; // hit라면 hit된 지점에 인덱스 저장
            }
            if(pos== -1){ // hit가 아니라면
                for(int i=size-1; i>=1; i--){
                    cache[i]=cache[i-1];
                }
            }
            else{ // hit라면
                for(int i=pos; i>=1; i--){ // hit가 난 지점부터 한칸씩 밀리게
                    cache[i]=cache[i-1];
                }
            }
            cache[0]=x;
        }
        return cache;
    }

    public static void main(String[] args) {
        Main T = new Main();
        Scanner sc = new Scanner(System.in);
        int s=sc.nextInt();
        int n=sc.nextInt();

        int[] arr=new int[n];
        for(int i=0; i<n; i++) arr[i]=sc.nextInt();
        for(int x:T.solution(s,n,arr)) System.out.print(x+" ");
    }
}