LRU(キャッシュ、ココア)


説明:


キャッシュは、CPUとメインメモリ(DRAM)との間の高速一時メモリであり、CPUが処理するタスクを格納する.
使用に必要なのは、処理速度を向上させる装置です.価格が高く、容量が小さいので、効率的に使います.
チョルスのコンピュータのキャッシュ使用規則はLRUアルゴリズムに従う.
LRUアルゴリズムは直訳して「最近使用」の略であり、その意味は最近使用されていないものに相当する.
キャッシュからアクションを削除するときに、最も長く使用されていないアルゴリズムを削除します.
キャッシュサイズが指定され、CPUがキャッシュが空の場合、N個のジョブを順次処理すると、N個のジョブが処理される.
プログラムを作成し、最近使用したキャッシュ状態から順にキャッシュの状態を出力します.

コード#コード#

public class LeastRecentlyUsed {
    public static void main(String[] args){
        Scanner in=new Scanner(System.in);
        int input1 = in.nextInt();
        int input2 = in.nextInt();
        int[] arr = new int[input2];
        for(int i=0; i<input2; i++){
            arr[i] = in.nextInt();
        }
        int[] solution = solution(arr, input1);
        for (int i : solution) {
            System.out.print(i+" ");
        }
    }

    public static int[] solution(int[] arr, int k){
        int[] answer = new int[k];
        for(int i : arr){

            int idx = answer.length-1;
            //같은 값이 이미 answer에 존재하는지 확인
            for(int j=0; j<answer.length; j++){
                if(i == answer[j]){
                    idx = j;
                    break;
                }
            }

            for(int j=idx; j>0; j--){
                answer[j] = answer[j-1];
            }
            answer[0] = i;
        }

        return answer;
    }
}
挿入ソートの概念を用いて問題を解くことができる.ただし、返される配列の値が現在挿入されている値と同じである場合、その値は配列の0番目の位置に移動し、移動する配列の値より前のすべての配列だけが1格後ろに移動し、if条件を使用する注意点を守れば答えが得られます.
問題を解くとき、問題を解く目的は問題の答えだけを求めるアルゴリズムではなく、問題に記述された動作を実現させることです.