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 |