BOJ/๐Ÿฅ‡

โ˜…Greedy Upper-Advanced I - 1 Solvedโ˜…

metamong 2023. 10. 18.

โ˜… 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 - 10 Solvedโ˜…  (0) 2023.12.15
โ˜…BF Advanced I - 3 Solvedโ˜…  (0) 2023.10.06
โ˜…Greedy Advanced I - 4 Solvedโ˜…  (0) 2023.08.30
โ˜…Sorting Advanced I - 5 Solvedโ˜…  (0) 2023.07.28

๋Œ“๊ธ€