Coding Test Java

인프런 - LRU

seonggu 2024. 1. 30. 19:42
import java.util.*;
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; // x가 캐시에 있으면 히트 지점 인덱스 저장
            }
            if(pos==-1) { // miss
                for(int i=size-1 ;i>=1; i--) { //맨뒤부터 
                    cache[i] = cache[i-1]; // 숫자 당겨주기
                }
                cache[0] = x;
            } else{ // hit
                     for(int i=pos; i>=1; i--) { // 해당 인덱스부터
                        cache[i] = cache[i-1]; // 숫자 당겨주기
                    }   
                    cache[0] = x;
                }
            
            }
        
        
		return cache;
	}
	public static void main(String[] args){
		Main T = new Main();
		Scanner kb = new Scanner(System.in);
		int s=kb.nextInt();
		int n=kb.nextInt();
		int[] arr=new int[n];
		for(int i=0; i<n; i++) arr[i]=kb.nextInt();
		for(int x : T.solution(s, n, arr)) System.out.print(x+" ");
	}
}