Deep_Dev
article thumbnail

 LRU

  -  Least Recently Used, ์ตœ๊ทผ๊นŒ์ง€ ์ ๊ฒŒ hit๋œ ์บ์‹œ๋ฐ์ดํ„ฐ๋ฅผ ์ง€์šฐ๋Š” ๋ฐฉ๋ฒ•์ด๋‹ค

 

์„ค๋ช…

์บ์‹œ๋ฉ”๋ชจ๋ฆฌ๋Š” 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.Scanner;
class Solution {
    public int[] solution(int size, int n, int[] arr) {
        int[] cache=new int[size];
        for(int x:arr){
            // ์ž„์˜ ๊ฐ’ ์„ค์ •
            int pos=-1;
            // ์ด๋ฏธ ์žˆ๋Š” ๊ฐ’์ด๋ฉด pos์— ํ•ด๋‹น ์œ„์น˜index ์ €์žฅ
            for(int i=0; i<size; i++) if(cache[i]==x) pos=i;
            // 1. pos๊ฐ€ -1 ๊ทธ๋Œ€๋กœ ์ผ๋•Œ ( = ๋ชป์ฐพ์Œ )
            // ๋งจ ์˜ค๋ฅธ์ชฝ๋ถ€ํ„ฐ ํ•˜๋‚˜์”ฉ ๊ฐ’์„ ์˜ค๋ฅธ์ชฝ์œผ๋กœ ๋‹น๊ธฐ๊ธฐ
            if(pos==-1){
                for(int i=size-1; i>=1; i--)
                    cache[i]=cache[i-1];
            }
            // 2. pos๊ฐ€ 1 ์ผ๋•Œ ( ์ฐพ์•˜์„๋•Œ )
            else{
                // ํ•ด๋‹น pos์œ„์น˜ ๋ถ€ํ„ฐ ๋’ค์—์žˆ๋Š” ๊ฐ’๋“ค ํ•˜๋‚˜์”ฉ ๋‹น๊ธฐ๊ธฐ
                for(int i=pos; i>=1; i--)
                    cache[i]=cache[i-1];
            }
            // ๊ทธ๋ฆฌ๊ณ  ์ฒซ๋ฒˆ์งธ ๊ฐ’์œผ๋กœ ํ˜„์žฌ x ๊ฐ’ 
            cache[0]=x;
        }
        return cache;
    }
    public static void main(String[] args){
        Scanner kb=new Scanner(System.in);
        Solution T=new Solution();
        int size=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(size,n,arr)) System.out.print(x+" ");
    }
}

'๐Ÿ“š ์ฝ”๋”ฉํ…Œ์ŠคํŠธ > JAVA' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[JAVA] List : LinkedList  (0) 2022.10.26
[JAVA] List : ArrayList  (0) 2022.10.26
[JAVA] StringBuilder  (0) 2022.10.26
[JAVA] ๋ฌธ๋ฒ• : ํ˜•๋ณ€ํ™˜ ์ •๋ฆฌ  (0) 2022.10.26
[JAVA] String method  (0) 2022.10.26