โ 1700 ๋ฉํฐํญ ์ค์ผ์ค๋ง โ
โค๏ธ๐ฅ Optimal Page Replacement ์๊ณ ๋ฆฌ์ฆ์์ ์ฝ์ผํธ์ ์ฒ์์ผ๋ก ๊ผฝ๋ page fault ํ์๋ฅผ ์ ์ธํ page fault์ ํ์๋ฅผ ์ต์ํํ๋ ๋ฌธ์
โค๏ธ๐ฅ โ ์ฝ์ผํธ ์ฑ์ฐ๊ธฐ → โก ์ฝ์ผํธ์ ์กด์ฌํ์ง ์๋ ์ฒซ ๊ธฐ๊ธฐ ๋ฑ์ฅํ๋ฉด(page fault ์ํฉ) (1) ์ด๋ฏธ ์ฑ์ด ๊ธฐ๊ธฐ ์ค ์์ ์กด์ฌํ์ง ์๋ ๊ธฐ๊ธฐ๊ฐ ์๋ค๋ฉด ํด๋น ๊ธฐ๊ธฐ์ ๊ต์ฒด (2) ์๋ค๋ฉด ์ฝ์ผํธ ๊ธฐ๊ธฐ์ index ํ์ธํด ๊ฐ์ฅ ๋์ค์ ๋ฑ์ฅํ๋ ๊ธฐ๊ธฐ์ ๊ต์ฒด(greedy)
import sys
input=sys.stdin.readline
N,K=map(int,input().split())
names=list(map(int,input().split()))
ans=0
ps=[0]*N #power_strip initialization
i=-1
while 1:
i+=1
if i==K:break
if 0 in ps and names[i] not in ps: ps[ps.index(0)]=names[i]
else:
if names[i] not in ps:
ans+=1
flag=False
for psn in ps:
if psn not in names[i:]:
ps[ps.index(psn)] = names[i]
flag=True
break
if not flag:
idxs=[(psn,names[i:].index(psn)) for psn in ps]
idxs = sorted(idxs,key=lambda x: x[1],reverse=True)
ps[ps.index(idxs[0][0])] = names[i]
print(ans)
Optimal Page Replacement Algorithm
intro โถ ์ด์์ฒด์ ๋ฉ์ธ ๋ฉ๋ชจ๋ฆฌ์ ์กด์ฌํ์ง ์๋ ์๋ก์ด page๊ฐ ์์ ๋ page fault๊ฐ ๋ฐ์. โถ page fault๊ฐ ๋ฐ์ํ ๋, existing page์ newly needed page replacement ์งํ โถ ์ด ๋, page fault์ ํ์๋ฅผ ์ต์ํํ ์
sh-avid-learner.tistory.com
'BOJ > ๐ฅ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
โ Tree Advanced I - 1 Solvedโ (1) | 2023.12.22 |
---|---|
โ BFS&DFS Advanced I - 13 Solvedโ (0) | 2023.12.15 |
โ BF Advanced I - 3 Solvedโ (0) | 2023.10.06 |
โ Greedy Advanced I - 5 Solvedโ (0) | 2023.08.30 |
โ Sorting Advanced I - 5 Solvedโ (0) | 2023.07.28 |
๋๊ธ