๐ง ๋ฌธ์
LRU ์๊ณ ๋ฆฌ์ฆ : Least Recently Used. ๊ฐ์ฅ ์ต๊ทผ์ ์ฌ์ฉ๋์ง ์์ ๊ฒ. ์บ์์์ ์์ ์ ์ ๊ฑฐํ ๋ ๊ฐ์ฅ ์ค๋ซ๋์ ์ฌ์ฉํ์ง ์์ ๊ฒ์ ์ ๊ฑฐํ๊ฒ ๋ค๋ ์๊ณ ๋ฆฌ์ฆ.
๋ง์ฝ ์บ์์ ์ฌ์ด์ฆ๊ฐ 5์ด๊ณ , ์์ ์ด 2 3 1 6 7 ์์ผ๋ก ์ ์ฅ๋์ด ์๋ค๋ฉด(๋งจ ์์ด ๊ฐ์ฅ ์ต๊ทผ์ ์ฐ์ธ ์์ ์ด๊ณ , ๋งจ ๋ค๋ ๊ฐ์ฅ ์ค๋ซ๋์ ์ฐ์ด์ง ์์ ์์ )
1. cache miss : ํด์ผํ ์์ ์ด ์บ์์ ์๋ ์ํ. ์์ํ์์ ๋ง์ฝ ์๋ก์ด ์์ ์ธ 5๋ฒ ์์ ์ cpu๊ฐ ์ฌ์ฉํ๋ค๋ฉด cache miss๊ฐ ๋๊ณ , ๋ชจ๋ ์์ ์ด ๋ค๋ก ๋ฐ๋ฆฌ๊ณ 5๋ฒ ์์ ์ ์บ์์ ๋งจ ์์ ์์นํ๋ค. 5 2 3 1 6 (7๋ฒ ์์ ์ ์บ์์์ ์ญ์ ๋๋ค)
2. cache hit : ํด์ผํ ์์ ์ด ์บ์์ ์๋ ์ํ๋ก ์ ์ํ์์ ๋ง์ฝ 3๋ฒ ์์ ์ cpu๊ฐ ์ฌ์ฉํ๋ค๋ฉด, cache hit๊ฐ ๋๊ณ , 3๋ฒ ์์ ์๋ 5, 2๋ฒ ์์ ์ ํ ์นธ ๋ค๋ก ๋ฐ๋ฆฌ๊ณ , 3๋ฒ์ด ๋งจ ์์ผ๋ก ์์นํ๊ฒ ๋๋ค. 5 2 3 1 6 ๐ 3 5 2 1 6
์บ์์ ํฌ๊ธฐ๊ฐ ์ฃผ์ด์ง๊ณ , ์บ์๊ฐ ๋น์ด์๋ ์ํ์์ n๊ฐ์ ์์ ์ cpu๊ฐ ์ฐจ๋ก๋ก ์ฒ๋ฆฌํ๋ค๋ฉด n๊ฐ์ ์์ ์ ์ฒ๋ฆฌํ ํ ์บ์ ๋ฉ๋ชจ๋ฆฌ์ ์ํ๋ฅผ ๊ฐ์ฅ ์ต๊ทผ ์ฌ์ฉ๋ ์์ ๋ถํฐ ์ฐจ๋ก๋๋ก ์ถ๋ ฅํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์ธ์.
๐ง ์ ๋ ฅ
์ฒซ ๋ฒ์งธ ์ค์ ์บ์์ ํฌ๊ธฐ์ธ S(3~10)์ ์์ ์ ๊ฐ์ N(5~1000)์ด ์ ๋ ฅ๋๋ค.
๋ ๋ฒ์งธ ์ค์ N๊ฐ์ ์์ ๋ฒํธ๊ฐ ์ฒ๋ฆฌ์์ผ๋ก ์ฃผ์ด์ง๋ค. ์์ ๋ฒํธ๋ 1~100 ์ด๋ค.
๐ง ์ถ๋ ฅ
๋ง์ง๋ง ์์ ํ ์บ์ ๋ฉ๋ชจ๋ฆฌ์ ์ํ๋ฅผ ๊ฐ์ฅ ์ต๊ทผ ์ฌ์ฉ๋ ์์ ๋ถํฐ ์ฐจ๋ก๋ก ์ถ๋ ฅํฉ๋๋ค.
์บ์๋ฉ๋ชจ๋ฆฌ๊ฐ ๋น์ด ์๋ ๋ถ๋ถ์ 0์ผ๋ก ์ถ๋ ฅํฉ๋๋ค.
๐ง 1ํธ (๊ฐ์ ํ์ด)
์ฝ์ ์ ๋ ฌ ํ์ฉ. ์ ์๋์ ์ด๋ป๊ฒ ์ด๋ฐ ์๊ฐ์ ํ์ จ์๊น..! ๋๋ a[0]์๋ง ์ง์คํ๋๋ฐ.. ๐
#include <iostream>
#include <vector>
#include<algorithm>
using namespace std;
int main(void){
freopen("input.txt", "rt", stdin);
int s, n, a, pos, i, j;
cin >> s >> n;
int c[s];
for(i = 1; i <= n; ++i){
cin >> a;
pos = -1;
for(j = 0; j < s; ++j){
if(c[j] == a){
pos = j;
}
}
if(pos == -1){
for(j = s-1; j >= 1; --j){
c[j] = c[j-1];
}
}
else{
for(j = pos; j>=1; --j){
c[j] = c[j-1];
}
}
c[0] = a;
}
for(int i = 0; i < s; ++i){
cout << c[i] << ' ';
}
return 0;
}
'๐ง ์ฝ๋ฉํ ์คํธ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[์ธํ๋ฐ C++] 39. ๋ ๋ฐฐ์ด ํฉ์น๊ธฐ (0) | 2024.05.02 |
---|---|
[์ธํ๋ฐ C++] 38. Inversion Sequence (0) | 2024.05.02 |
[์ธํ๋ฐ C++] 36. ์ฝ์ ์ ๋ ฌ (0) | 2024.05.02 |
[์ธํ๋ฐ C++] 35. Special Sort(๊ตฌ๊ธ ์ธํฐ๋ทฐ) (0) | 2024.05.02 |
[์ธํ๋ฐ C++] 34. ๋ฒ๋ธ์ ๋ ฌ (0) | 2024.05.02 |