https://school.programmers.co.kr/learn/courses/30/lessons/17680
ํ๋ก๊ทธ๋๋จธ์ค
SW๊ฐ๋ฐ์๋ฅผ ์ํ ํ๊ฐ, ๊ต์ก, ์ฑ์ฉ๊น์ง Total Solution์ ์ ๊ณตํ๋ ๊ฐ๋ฐ์ ์ฑ์ฅ์ ์ํ ๋ฒ ์ด์ค์บ ํ
programmers.co.kr
์ฒ์ ์ฝ๋
import java.util.*;
class Solution {
public int solution(int cacheSize, String[] cities) {
if (cacheSize == 0) {
return 5 * cities.length;
}
Deque<String> deque = new ArrayDeque<>();
Set<String> set = new HashSet<>();
int answer = 0;
for (String c : cities) {
String city = c.toLowerCase();
int qsize = deque.size();
/** cache hit **/
if (set.contains(city)) {
answer++;
// ๋ค๋ฅธ ์์๋ค ๋ค์ ๋ค ์ถ๊ฐํด์ฃผ๊ณ
for (int j=0; j<qsize; j++) {
String q = deque.poll();
if (!q.equals(city)) {
deque.add(q);
}
}
// ๋ง์ง๋ง์ ํ์ฌ ๋ค์ด์จ ์
๋ ฅ ์ถ๊ฐ
deque.add(city);
continue;
}
/** cache miss **/
// ํ์ฌ ์บ์๊ฐ ๋ค ์ฐจ์๋ ๊ฒฝ์ฐ ๋นผ์ฃผ๊ณ
if (qsize >= cacheSize) {
String q = deque.poll();
set.remove(q);
}
// ํ์ฌ ๋ค์ด์จ ์
๋ ฅ ์ถ๊ฐ
deque.add(city);
set.add(city);
answer += 5;
}
return answer;
}
}
์ฒ์์ PriorityQueue ์ด์ฉํด์ ํ์๋ค๊ฐ ์๊ฐํด๋ณด๋ ์ด์ฐจํผ ์คํ ์์๋ฅผ ์ ์ฅํ๋๋ฐ, ์ฐ์ ์์ ํ๊ฐ ํ์ ์์๋ค. Deque๋ก ๋ณ๊ฒฝ
๋, Map ์ด์ฉํ๋ค๊ฐ ๊ฐ์ด ๋ช ๋ฒ ๋ํ๋ฌ๋์ง๋ ํ์๊ฐ ์์๋ค. Set์ผ๋ก ๋ณ๊ฒฝ
์ ์ถ ํ ๋ค๋ฅธ ํ์ด๋ค์ ๋ณด๋ ๋ค๋ค ๋๋ฌด ๊น๋ํ๊ฒ ํผ ๊ฒ์ด ์๋๊ฐ...!! ์ ๊ฒ๋ ๋ง์ด ๊ณ ์น ๊ฑฐ์๋๋ฐ..ใ ใ ใ ใ
ํ ์์ฒด์์ contains, remove ํ ์๊ฐ์ ์ ํ ๋ชปํ๋ค.

๋ณ๊ฒฝ ์ฝ๋
import java.util.*;
class Solution {
public int solution(int cacheSize, String[] cities) {
if (cacheSize == 0) {
return 5 * cities.length;
}
Deque<String> deque = new ArrayDeque<>();
int answer = 0;
for (String c : cities) {
String city = c.toLowerCase();
/** cache hit **/
if (deque.contains(city)) {
deque.remove(city);
deque.add(city);
answer++;
continue;
}
/** cache miss **/
if (deque.size() >= cacheSize) {
deque.poll();
}
deque.add(city);
answer += 5;
}
return answer;
}
}
ํจ์ฌ ๊น๋ํด์ก๋ค.

์ฐจ์ด๋ ๋ฏธ๋ฏธํ์ง๋ง ํ๊ท ์คํ ์๊ฐ๋ ์ค์ด๋ค์๋ค.
'๐ค > ์๊ณ ๋ฆฌ์ฆ ์ฌํ์ด๋' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[ํ๋ก๊ทธ๋๋จธ์ค/Java] ์์ (1) | 2025.03.17 |
---|---|
[ํ๋ก๊ทธ๋๋จธ์ค/Java] ๊ทค ๊ณ ๋ฅด๊ธฐ (1) | 2025.03.12 |
[ํ๋ก๊ทธ๋๋จธ์ค/Java] ์ต์๊ฐ ๋ง๋ค๊ธฐ (2) | 2025.03.11 |