[ํ๋ก๊ทธ๋๋จธ์ค] [1์ฐจ] ์บ์ (LV.2)
๋ฌธ์ ๋งํฌ
https://school.programmers.co.kr/learn/courses/30/lessons/17680
ํ๋ก๊ทธ๋๋จธ์ค
์ฝ๋ ์ค์ฌ์ ๊ฐ๋ฐ์ ์ฑ์ฉ. ์คํ ๊ธฐ๋ฐ์ ํฌ์ง์ ๋งค์นญ. ํ๋ก๊ทธ๋๋จธ์ค์ ๊ฐ๋ฐ์ ๋ง์ถคํ ํ๋กํ์ ๋ฑ๋กํ๊ณ , ๋์ ๊ธฐ์ ๊ถํฉ์ด ์ ๋ง๋ ๊ธฐ์ ๋ค์ ๋งค์นญ ๋ฐ์ผ์ธ์.
programmers.co.kr
ํ์ด ๊ณผ์
1. ์ฐ์ ์บ์ ์ฌ์ด์ฆ๊ฐ 0์ด๋ฉด, cache hit์ด ์กด์ฌํ์ง ์์ผ๋ฏ๋ก, ๋ฐฐ์ด๊ธธ์ด * 5๋ฅผ ํด์ ๋ฐ๋ก return ํด์ค๋ค.
2. ์บ์ ์ฌ์ด์ฆ์ ๋ง๊ฒ ๋ฌธ์์ด์ ๋ด์ ๋ฐฐ์ด cache
๊ณผ ํด๋น ๋ฌธ์์ด์ด ์บ์์ ๋ช ํด๋์ ๋ด๊ณ ์์๋์ง ์นด์ดํธํ ์ ์ ๋ฐฐ์ด cnt
์ ๋ง๋ค์ด์ฃผ์๋ค.
3. ๋จผ์ ์
๋ ฅ๋ฐ์ ๋์์ด๋ฆ ๋ฐฐ์ด cities
๋ฅผ for๋ฌธ์ผ๋ก ๋๋ฉฐ ํ๋์ฉ ์บ์์ ๋ฃ์ด์ค๋ค. ๋ค๋ง ๋ฃ์ด์ค ๋ LRU ์บ์ ๊ต์ฒด ์๊ณ ๋ฆฌ์ฆ์ ๋ฐ๋ผ์ ํฌ๊ฒ ๋ ๋ฐฉ๋ฒ์ผ๋ก ๋๋๋ค.
1. ์บ์์ ํด๋น ๋์์ด๋ฆ์ด ์๋์ง? (cache hit)
2. ์บ์์ ํด๋น ๋์์ด๋ฆ์ด ์๋์ง? (cache miss)
1๋ฒ๊ณผ ๊ฐ๋ค๋ฉด cache hit์ด๋ฏ๋ก ์คํ์๊ฐ์ด 1์ด๊ธฐ ๋๋ฌธ์ ๋ฆฌํด๊ฐ์ +1์ ํด์ฃผ๊ณ , ์นด์ดํธ ๋ฐฐ์ด์ 0์ผ๋ก ์ด๊ธฐํํด์ค๋ค. ์ด ๋, ๋ค๋ฅธ ๋ฐฐ์ด๋ค์ ํ ํด์ ๋๋ ๊ฒ์ด๋ฏ๋ก ์นด์ดํธ ๋ฐฐ์ด์ +1์ ํด์ค๋ค. ์ฐธ๊ณ ๋ก ๋์ ์ด๋ฆ์ ๋น๊ตํ ๋๋ equalsIgnoreCase()
๋ฅผ ์ฌ์ฉํ์ฌ, ๋์๋ฌธ์ ๊ตฌ๋ถ ์์ด ๋น๊ตํ๋๋ก ํด์ค๋ค.
2๋ฒ๊ณผ ๊ฐ๋ค๋ฉด cache miss์ด๋ค. ์นด์ดํธ ๋ฐฐ์ด์ ๋๋ฉฐ ์ ์ผ ํฐ ๊ฐ(์ ์ผ ์บ์์ ์ค๋ ๋จธ๋ฌด๋ฅธ ๊ฐ)์ ์ฐพ์๋ธ๋ค. ํด๋น ์ธ๋ฑ์ค๋ฅผ ๊ตฌํ์ฌ, ์บ์ ๋ฐฐ์ด์ ๋์ ์ด๋ฆ์ ์ ๋ฐ์ดํธ ํด์ฃผ๊ณ , ์นด์ดํธ๋ 0์ผ๋ก ์ด๊ธฐํํ๋ค. ์คํ์๊ฐ์ด 5์ด๋ฏ๋ก ๋ฆฌํด๊ฐ์ +5๋ฅผ ํด์ค๋ค.
์ฝ๋
class Solution {
public int solution(int cacheSize, String[] cities) {
int answer = 0;
if(cacheSize == 0) {
return cities.length * 5;
}
int[] cnt = new int[cacheSize];
String[] cache = new String[cacheSize];
for(int i = 0; i < cities.length; i++) {
String city = cities[i];
boolean b = true;
int val = -99999999;
int idx = 0;
for(int j = 0; j < cache.length; j++) {
if(city.equalsIgnoreCase(cache[j])) {
cnt[j] = 0;
b = false;
answer += 1;
} else {
cnt[j] += 1;
}
}
if(b) {
for(int j = 0; j < cnt.length; j++) {
if(val < cnt[j]) {
val = cnt[j];
idx = j;
}
cnt[j] += 1;
}
cache[idx] = city;
cnt[idx] = 0;
answer += 5;
}
}
return answer;
}
}
'๐ป ๊ฐ๋ฐ > ๐ ์๊ณ ๋ฆฌ์ฆ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[ํ๋ก๊ทธ๋๋จธ์ค] JadenCase ๋ฌธ์์ด ๋ง๋ค๊ธฐ (0) | 2023.08.09 |
---|---|
์ต๋๊ณต์ฝ์, ์ต์๊ณต๋ฐฐ์ ๊ตฌํ๊ธฐ (Feat. ์ ํด๋ฆฌ๋ ํธ์ ๋ฒ) (1) | 2022.11.27 |