https://school.programmers.co.kr/learn/courses/30/lessons/17680?language=cpp#
μΊμ
μ§λκ°λ°νμμ 근무νλ μ μ΄μ§λ μ§λμμ λμ μ΄λ¦μ κ²μνλ©΄ ν΄λΉ λμμ κ΄λ ¨λ λ§μ§ κ²μλ¬Όλ€μ λ°μ΄ν°λ² μ΄μ€μμ μ½μ΄ 보μ¬μ£Όλ μλΉμ€λ₯Ό κ°λ°νκ³ μλ€.
μ΄ νλ‘κ·Έλ¨μ ν
μ€ν
μ
무λ₯Ό λ΄λΉνκ³ μλ μ΄νΌμΉλ μλΉμ€λ₯Ό μ€ννκΈ° μ κ° λ‘μ§μ λν μ±λ₯ μΈ‘μ μ μννμλλ°, μ μ΄μ§κ° μμ±ν λΆλΆ μ€ λ°μ΄ν°λ² μ΄μ€μμ κ²μλ¬Όμ κ°μ Έμ€λ λΆλΆμ μ€νμκ°μ΄ λ무 μ€λ κ±Έλ¦°λ€λ κ²μ μκ² λμλ€.
μ΄νΌμΉλ μ μ΄μ§μκ² ν΄λΉ λ‘μ§μ κ°μ νλΌκ³ λ¦λ¬νκΈ° μμνμκ³ , μ μ΄μ§λ DB μΊμλ₯Ό μ μ©νμ¬ μ±λ₯ κ°μ μ μλνκ³ μμ§λ§ μΊμ ν¬κΈ°λ₯Ό μΌλ§λ‘ ν΄μΌ ν¨μ¨μ μΈμ§ λͺ°λΌ λκ°ν μν©μ΄λ€.
μ΄νΌμΉμκ² μλ¬λ¦¬λ μ μ΄μ§λ₯Ό λμ, DB μΊμλ₯Ό μ μ©ν λ μΊμ ν¬κΈ°μ λ°λ₯Έ μ€νμκ° μΈ‘μ νλ‘κ·Έλ¨μ μμ±νμμ€.
μ λ ₯ νμ
- μΊμ ν¬κΈ°(cacheSize)μ λμμ΄λ¦ λ°°μ΄(cities)μ μ λ ₯λ°λλ€.
- cacheSizeλ μ μμ΄λ©°, λ²μλ 0 β¦ cacheSize β¦ 30 μ΄λ€.
- citiesλ λμ μ΄λ¦μΌλ‘ μ΄λ€μ§ λ¬Έμμ΄ λ°°μ΄λ‘, μ΅λ λμ μλ 100,000κ°μ΄λ€.
- κ° λμ μ΄λ¦μ 곡백, μ«μ, νΉμλ¬Έμ λ±μ΄ μλ μλ¬Έμλ‘ κ΅¬μ±λλ©°, λμλ¬Έμ ꡬλΆμ νμ§ μλλ€. λμ μ΄λ¦μ μ΅λ 20μλ‘ μ΄λ£¨μ΄μ Έ μλ€.
μΆλ ₯ νμ
- μ λ ₯λ λμμ΄λ¦ λ°°μ΄μ μμλλ‘ μ²λ¦¬ν λ, "μ΄ μ€νμκ°"μ μΆλ ₯νλ€.
쑰건
- μΊμ κ΅μ²΄ μκ³ λ¦¬μ¦μ LRU(Least Recently Used)λ₯Ό μ¬μ©νλ€.
- cache hitμΌ κ²½μ° μ€νμκ°μ 1μ΄λ€.
- cache missμΌ κ²½μ° μ€νμκ°μ 5μ΄λ€.
νμ΄
쑰건μ μ£Όμ΄μ§ μΊμκ΅μ²΄ μκ³ λ¦¬μ¦ LRU μ λν κΈ°λ³Έμ μΈ μ§μμ΄ μμ΄μΌνλ λ¬Έμ μλ€. λλ¬΄ν΄ ;(
https://github.com/seondal/Daily_CS/issues/9
#include <string>
#include <vector>
#include <deque>
#include <algorithm>
using namespace std;
deque<string> cache;
int solution(int cacheSize, vector<string> cities) {
int answer = 0;
if(cacheSize == 0) return answer = 5*cities.size();
for(string input : cities) {
transform(input.begin(), input.end(), input.begin(), ::tolower);
auto number = find(cache.begin(), cache.end(), input);
if(number != cache.end()) {
// Hit
cache.erase(number);
answer++;
} else {
// Miss
if(cache.size() == cacheSize)
cache.pop_front();
answer += 5;
}
cache.push_back(input);
}
return answer;
}
https://school.programmers.co.kr/learn/courses/30/lessons/17680/solution_groups?language=cpp&type=my
μνμ°©μ€
μ²μμλ μΊμν¬κΈ° 0μΈκ²½μ°λ₯Ό λ°λ‘ μ²λ¦¬νμ§ μμλλ°,
κ·Έλ¬λλ ν μ€νΈ7κ³Ό ν μ€νΈ17μμ μ€ν¨(signal: segmentation fault (core dumped)) κ° λ΄λ€
ν μ€νΈ 6μμ μΊμν¬κΈ°κ° 0μμλ λ΅μ μ λμλλ°.. μ΄μ λ μ λͺ¨λ₯΄κ² λ€.. γ
https://school.programmers.co.kr/questions/19566
λμ²λΌ 7λ² 17λ²λ§ ν리λ κ²½μ°μ ν΄κ²°μ± μ΄ μλλ°..
λ³Έ κΈμ λ°λ‘ ν μΌλ μ ν΅κ³Όνκ³ μ μΆλ§νλ©΄ ν리λ..μν©..γ γ
#include <string>
#include <vector>
#include <deque>
#include <algorithm>
using namespace std;
deque<string> cache;
int solution(int cacheSize, vector<string> cities) {
int answer = 0;
for(string input : cities) {
transform(input.begin(), input.end(), input.begin(), ::tolower);
auto number = find(cache.begin(), cache.end(), input);
if(number != cache.end()) {
// Hit
cache.erase(number);
answer++;
} else {
// Miss
if(cache.size() == cacheSize)
cache.pop_front();
answer += 5;
}
cache.push_back(input);
}
return answer;
}
'π¦ Chango > 𧩠Data Structure' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
λ°°μ΄κ³Ό 리μ€νΈλ‘ ν ꡬννκΈ° (0) | 2022.09.04 |
---|