Tags
- ๋ฌธ์์ด
- SpringBoot
- ๋ฐฑํธ๋ํน
- LV2
- ์ํ
- BOJ
- CodingTest
- Java
- ์๋ฎฌ๋ ์ด์
- Study
- stack
- greedy
- sort
- ๊ต์ฌ
- ๊น์ด ์ฐ์ ํ์
- BFS
- Dynamic Programming
- Brute Force Algorithm
- ์ ์๋ก
- dfs
- queue
- PGM
- DP
- ์ ๋ ฌ
- ๊ทธ๋ํ ์ด๋ก
- ๋๋น ์ฐ์ ํ์
- ๊ทธ๋ํ ํ์
- Python
- ๊ตฌํ
- ์๋ฃ๊ตฌ์กฐ
Archives
๊ธฐ๋ก๋ฐฉ
Lv.2 : [1์ฐจ] ์บ์ ๋ณธ๋ฌธ
๐ธ ๋ฌธ์ ๋ถ์ ๐ธ
- ์บ์ ๊ต์ฒด ์๊ณ ๋ฆฌ์ฆ ์ค LRU (Least Recently Used)๋ฅผ ๊ตฌํํ๋ ๋ฌธ์ ์ด๋ค.
๐ธ ๋ฌธ์ ํ์ด ๐ธ
- ํฌ๊ธฐ ์ ํ์ด ์๋ ํ ํํ์์ ๊ฐ์ฅ ์ฌ์ฉํ์ง ์ค๋ ๋ ๋์ ์ด๋ฆ์ ๋จผ์ ์ง์์ฃผ๋ ๋ฐฉ์์ผ๋ก ๊ตฌํํ๋ค.
- cache hit์ผ ๊ฒฝ์ฐ๋ ํด๋น ๋์ ์ด๋ฆ์ ๊ฐ์ฅ ์ต๊ทผ์ ์ฌ์ฉํ ๊ฒ์ผ๋ก ์ฎ๊ฒจ์ฃผ์ด์ผ ํ๋ค.
- ๋์ ์ด๋ฆ์ด ๋์๋ฌธ์๋ฅผ ๊ตฌ๋ถํ์ง ์์์ผ ํ๊ณ , cacheSize๊ฐ 0์ด ๋ ์ ์์์ ์ ์ํ๋ค.
๐ธ ์ฝ๋ ๐ธ
import java.util.ArrayDeque;
import java.util.Queue;
class Solution {
public int solution(int cacheSize, String[] cities) {
Queue<String> que = new ArrayDeque<>();
int answer = 0;
for (String city : cities) {
city = city.toLowerCase();
if (que.contains(city)) {
que.remove(city);
que.add(city);
answer += 1;
} else {
answer += 5;
que.add(city);
if (que.size() > cacheSize)
que.poll();
}
}
return answer;
}
}
๐ธ ์ฝ๋ ํด์ ๐ธ
- ํ์ ํฌํจ๋์ด ์์ผ๋ฉด answer์ +1, ์๋ค๋ฉด +5 ๋ฅผ ๊ณ์ฐํ๋ค.
- ํฌํจ๋์ด ์์๋ ํ์์ ํด๋น์์๋ฅผ ์ง์ฐ๊ณ ๋ค์ ์ถ๊ฐํ๋ ๋ฐฉ์์ผ๋ก ๊ฐ์ฅ ์ต๊ทผ ์ฌ์ฉ์ผ๋ก ์์๋ฅผ ๋ณ๊ฒฝํ๋ค.
- ์์๊ฐ ์์ ์์๋ ํ์ ์ถ๊ฐํ๊ณ , ํ ์ฌ์ด์ฆ๊ฐ ์ ํ ํฌ๊ธฐ๋ฅผ ๋์์๋๋ ๊ฐ์ฅ ์ ์์๋ฅผ ์ ๊ฑฐํ๋ค.
๐ธ end ๐ธ
- ํ๋ฅผ ์ด์ฉํด์ ๋จ์ํ ๊ตฌํํ์ง๋ง contains()์์ ์ ํํ์์ด ์ด๋ค์ง๋ฏ๋ก ๊ทธ๋ฅ ํจ์จ์ ์ธ ์ฝ๋๋ ์๋ ๊ฒ ๊ฐ๋ค.
- HashMap์์ ์์๋ฅผ ์ ์งํ๋ ๋ฒ์ ๋ชฐ๋๋๋ฐ, ๋ค๋ฅธ ์ฌ๋์ ํ์ด๋ฅผ ๋ณด๋ LinkedHashMap์ ์ฌ์ฉํด์ ๊ตฌํํ๊ฑธ ๋ณด๊ณ ์๋ก ์์๋ณด๊ฒ ๋์๋ค.
- LinkedHashMap์ ์์๋ฅผ ๋ณด์ฅํ๋ HashMap์ธ๋ฐ, ๊ธฐ๋ณธ์ ์ธ ์ฌ์ฉ๋ฒ์ ๋๊ฐ๊ณ ๋งํฌ๋ ๋ฆฌ์คํธ๋ฅผ ์ ์ฉํด์ ์์๋ฅผ ๋ณด์ฅํ๋ ๊ฒ ๊ฐ๋ค. ๊ฐ์ฅ ์ค๋๋ ์์๋ head์ด๊ณ , ์ต๊ทผ ์์๋ tail์ ์ ์ฅ๋๋ค.
- ํน๋ณํ ๊ธฐ๋ฅ์ผ๋ก๋ removeEldestEntry() ๋ฉ์๋๋ก ์กฐ๊ฑด์ ํตํด head๋ฅผ ์ ๊ฑฐํ ์ ์๋ค.
- ์ฌ๊ธฐ์๋ size๊ฐ cacheSize๊ฐ ๋๋ฉด ture๋ฅผ ๋ฐํํ๋๋ก ์์ฑํ๋ฉด ๋๋ค.
- ๋์๋ฌธ์๋ฅผ ๊ตฌ๋ถํ์ง ์๋๋ค๋ ์กฐ๊ฑด์์ ํ ๋ฒ, ์ต๊ทผ ์ฌ์ฉํ ์์๋ฅผ ์์ผ๋ก ๋น๊ฒจ์ค์ผํ๋ ๋ถ๋ถ์์ ํ ๋ฒ์ฉ ํ๋ ธ๋ค.
- ๋ฌธ์ ์กฐ๊ฑด์ ๋ ๊ผผ๊ผผํ๋ณด๊ณ ๋ถ์ํด์ผํ ํ์๋ฅผ ๋๊ผ๋ค.
- ์ค๋๋ง์ ์ฝํ ๋ฅผ ๋ค์ ํ๊ธฐ ์์ํ๋๋ฐ ์ข์ ์ฌํ์น๋ฃ(?)๊ฐ ๋ ๋ฌธ์ ์ด๋ค. ์๋กญ๊ฒ ์๊ฒ๋ ๊ฐ๋ ๋ ํฐ ๋์์ด ๋ ๊ฒ ๊ฐ๋ค.
728x90
'CodingTest > Java' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
Lv.2 : ๊ธฐ๋ฅ๊ฐ๋ฐ (0) | 2023.11.02 |
---|---|
BOJ_1418 : K-์ธ์ค์ (0) | 2023.11.01 |
Lv.2 : ํ๋ ฌ์ ๊ณฑ์ (0) | 2023.10.17 |
Lv.2 : ํ ์ธ ํ์ฌ (0) | 2023.10.01 |
Lv.2 : n^2 ๋ฐฐ์ด ์๋ฅด๊ธฐ (0) | 2023.09.23 |