🌷🌼λͺ¨μ—¬λ΄μš” 개발의숲🌷🌼

[JAVA/μ½”λ”©ν…ŒμŠ€νŠΈ] Least Recently Used λ³Έλ¬Έ

개발/μ•Œκ³ λ¦¬μ¦˜ λ¬Έμ œν’€μ΄ JAVA

[JAVA/μ½”λ”©ν…ŒμŠ€νŠΈ] Least Recently Used

μš”μΌμ΄ 2022. 1. 18. 15:51
λ°˜μ‘ν˜•

μ„€λͺ…

μΊμ‹œλ©”λͺ¨λ¦¬λŠ” CPU와 μ£ΌκΈ°μ–΅μž₯치(DRAM) μ‚¬μ΄μ˜ κ³ μ†μ˜ μž„μ‹œ λ©”λͺ¨λ¦¬λ‘œμ„œ CPUκ°€ μ²˜λ¦¬ν•  μž‘μ—…μ„ μ €μž₯ν•΄ λ†“μ•˜λ‹€κ°€

ν•„μš”ν•  λ°”λ‘œ μ‚¬μš©ν•΄μ„œ μ²˜λ¦¬μ†λ„λ₯Ό λ†’μ΄λŠ” μž₯μΉ˜μ΄λ‹€. μ›Œλ‚™ λΉ„μ‹Έκ³  μš©λŸ‰μ΄ μž‘μ•„ 효율적으둜 μ‚¬μš©ν•΄μ•Ό ν•œλ‹€.

철수의 μ»΄ν“¨ν„°λŠ” μΊμ‹œλ©”λͺ¨λ¦¬ μ‚¬μš© κ·œμΉ™μ΄ LRU μ•Œκ³ λ¦¬μ¦˜μ„ λ”°λ₯Έλ‹€.

LRU μ•Œκ³ λ¦¬μ¦˜μ€ Least Recently Used 의 μ•½μžλ‘œ μ§μ—­ν•˜μžλ©΄ κ°€μž₯ μ΅œκ·Όμ— μ‚¬μš©λ˜μ§€ μ•Šμ€ 것 μ •λ„μ˜ 의미λ₯Ό 가지고 μžˆμŠ΅λ‹ˆλ‹€.

μΊμ‹œμ—μ„œ μž‘μ—…μ„ μ œκ±°ν•  λ•Œ κ°€μž₯ μ˜€λž«λ™μ•ˆ μ‚¬μš©ν•˜μ§€ μ•Šμ€ 것을 μ œκ±°ν•˜κ² λ‹€λŠ” μ•Œκ³ λ¦¬μ¦˜μž…λ‹ˆλ‹€.

μΊμ‹œμ˜ 크기가 주어지고, μΊμ‹œκ°€ λΉ„μ–΄μžˆλŠ” μƒνƒœμ—μ„œ N개의 μž‘μ—…μ„ CPUκ°€ μ°¨λ‘€λ‘œ μ²˜λ¦¬ν•œλ‹€λ©΄ N개의 μž‘μ—…μ„ μ²˜λ¦¬ν•œ ν›„

μΊμ‹œλ©”λͺ¨λ¦¬μ˜ μƒνƒœλ₯Ό κ°€μž₯ 졜근 μ‚¬μš©λœ μž‘μ—…λΆ€ν„° μ°¨λ‘€λŒ€λ‘œ 좜λ ₯ν•˜λŠ” ν”„λ‘œκ·Έλž¨μ„ μž‘μ„±ν•˜μ„Έμš”.

μž…λ ₯

첫 번째 쀄에 μΊμ‹œμ˜ 크기인 S(3<=S<=10)와 μž‘μ—…μ˜ 개수 N(5<=N<=1,000)이 μž…λ ₯λœλ‹€.

두 번째 쀄에 N개의 μž‘μ—…λ²ˆν˜Έκ°€ 처리순으둜 주어진닀. μž‘μ—…λ²ˆν˜ΈλŠ” 1 ~100 이닀.

좜λ ₯

λ§ˆμ§€λ§‰ μž‘μ—… ν›„ μΊμ‹œλ©”λͺ¨λ¦¬μ˜ μƒνƒœλ₯Ό κ°€μž₯ 졜근 μ‚¬μš©λœ μž‘μ—…λΆ€ν„° μ°¨λ‘€λ‘œ 좜λ ₯ν•©λ‹ˆλ‹€.

 

μ˜ˆμ‹œ μž…λ ₯ 1

5 9
1 2 3 2 6 2 3 5 7

μ˜ˆμ‹œ 좜λ ₯1

7 5 3 2 6

힌트

 

 

 

 

 

import java.util.*;

public class Main {

    public static void solution(int s, int n, int[] array){

        int[] memory = new int[s];
        int cnt = 1;

        for(int i=0; i<n; i++){

            int tmp = 0;
            int val = 0;
            for(int j=0; j<cnt; j++){
                val = memory[j];
                memory[j] = tmp;
                tmp = val;
                if(array[i] == tmp) {
                    cnt--;
                    break;
                }
            }

            if(cnt < s){
                cnt++;
            }

            memory[0] = array[i];
        }

        for(int i=0; i<s; i++){
            System.out.print(memory[i] + " ");
        }

    }

    public static void main(String[] args) {

        Main main = new Main();
        Scanner kb = new Scanner(System.in);

        int s = kb.nextInt();
        int n = kb.nextInt();

        int[] array = new int[n];

        for(int i=0; i<n; i++){
            array[i] = kb.nextInt();
        }

        Main.solution(s, n, array);
    }


}
Comments