λ¬Έμ μ€λͺ
μ§λκ°λ°νμμ 근무νλ μ μ΄μ§λ μ§λμμ λμ μ΄λ¦μ κ²μνλ©΄ ν΄λΉ λμμ κ΄λ ¨λ λ§μ§ κ²μλ¬Όλ€μ λ°μ΄ν°λ² μ΄μ€μμ μ½μ΄ 보μ¬μ£Όλ μλΉμ€λ₯Ό κ°λ°νκ³ μλ€.
μ΄ νλ‘κ·Έλ¨μ ν μ€ν μ 무λ₯Ό λ΄λΉνκ³ μλ μ΄νΌμΉλ μλΉμ€λ₯Ό μ€ννκΈ° μ κ° λ‘μ§μ λν μ±λ₯ μΈ‘μ μ μννμλλ°, μ μ΄μ§κ° μμ±ν λΆλΆ μ€ λ°μ΄ν°λ² μ΄μ€μμ κ²μλ¬Όμ κ°μ Έμ€λ λΆλΆμ μ€νμκ°μ΄ λ무 μ€λ κ±Έλ¦°λ€λ κ²μ μκ² λμλ€.
μ΄νΌμΉλ μ μ΄μ§μκ² ν΄λΉ λ‘μ§μ κ°μ νλΌκ³ λ¦λ¬νκΈ° μμνμκ³ , μ μ΄μ§λ DB μΊμλ₯Ό μ μ©νμ¬ μ±λ₯ κ°μ μ μλνκ³ μμ§λ§ μΊμ ν¬κΈ°λ₯Ό μΌλ§λ‘ ν΄μΌ ν¨μ¨μ μΈμ§ λͺ°λΌ λκ°ν μν©μ΄λ€.
μ΄νΌμΉμκ² μλ¬λ¦¬λ μ μ΄μ§λ₯Ό λμ, DB μΊμλ₯Ό μ μ©ν λ μΊμ ν¬κΈ°μ λ°λ₯Έ μ€νμκ° μΈ‘μ νλ‘κ·Έλ¨μ μμ±νμμ€.
μ λ ₯ νμ
- μΊμ ν¬κΈ°(cacheSize)μ λμμ΄λ¦ λ°°μ΄(cities)μ μ λ ₯λ°λλ€.
- cacheSizeλ μ μμ΄λ©°, λ²μλ 0 β¦ cacheSize β¦ 30 μ΄λ€.
- citiesλ λμ μ΄λ¦μΌλ‘ μ΄λ€μ§ λ¬Έμμ΄ λ°°μ΄λ‘, μ΅λ λμ μλ 100,000κ°μ΄λ€.
- κ° λμ μ΄λ¦μ 곡백, μ«μ, νΉμλ¬Έμ λ±μ΄ μλ μλ¬Έμλ‘ κ΅¬μ±λλ©°, λμλ¬Έμ ꡬλΆμ νμ§ μλλ€. λμ μ΄λ¦μ μ΅λ 20μλ‘ μ΄λ£¨μ΄μ Έ μλ€.
μΆλ ₯ νμ
- μ λ ₯λ λμμ΄λ¦ λ°°μ΄μ μμλλ‘ μ²λ¦¬ν λ, "μ΄ μ€νμκ°"μ μΆλ ₯νλ€.
쑰건
- μΊμ κ΅μ²΄ μκ³ λ¦¬μ¦μ LRU(Least Recently Used)λ₯Ό μ¬μ©νλ€.
- cache hitμΌ κ²½μ° μ€νμκ°μ 1μ΄λ€.
- cache missμΌ κ²½μ° μ€νμκ°μ 5μ΄λ€.
λ΄ νμ΄
μΊμλ₯Ό queueλ‘ κ΅¬νν΄μ νμλ€.
μ£Όμν μ μ μΊμλ₯Ό μννλ©΄μ λμ μ΄λ¦μ μ°Ύμ λ, μΊμ ν¬κΈ°μ λ³λμ΄ μμ μ μκΈ° λλ¬Έμ μΊμ ν¬κΈ°λ₯Ό 미리 μ μ₯ν λ€μ forλ¬Έμ λμμΌνλ€λ κ²μ΄λ€. μ΄κ±Έ κΉλΉ‘νλ€λγ γ
#include <string>
#include <vector>
#include <queue>
#include <algorithm>
using namespace std;
int solution(int cacheSize, vector<string> cities) {
int answer = 0;
queue<string> cache;
// μΊμ ν¬κΈ°κ° 0 μΌλ
if(cacheSize == 0)
{
answer = cities.size() * 5;
return answer;
}
for(int i = 0; i < cities.size(); i++)
{
// μλ¬Έμλ‘ μ ν
string city;
city.resize(cities[i].size());
transform(cities[i].begin(), cities[i].end(), city.begin(), ::tolower);
// cacheκ° λΉμ΄μμ κ²½μ°
if(cache.empty())
{
cache.push(city);
answer += 5;
continue;
}
// cacheμ νμ¬ λμ μ΄λ¦μ΄ μλμ§ μ°Ύλλ€
bool find = false;
int size = cache.size();
for(int s = 0; s < size; ++s)
{
string cur = cache.front();
cache.pop();
// λμ μ΄λ¦μ΄ μλ€λ©΄ μΊμ μ μ€
if(cur == city)
{
find = true;
answer += 1;
}
else
{
cache.push(cur);
}
}
cache.push(city);
// λμ μ΄λ¦μ΄ μμ κ²½μ° μΊμ λ―Έμ€
if(!find)
{
answer += 5;
if(cache.size() > cacheSize)
{
cache.pop();
}
}
}
return answer;
}
'π₯οΈ Study Note > Coding Test' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[νλ‘κ·Έλλ¨Έμ€]level.2 - μ°μ λΆλΆ μμ΄ ν©μ κ°μ(C++) (0) | 2023.07.23 |
---|---|
[νλ‘κ·Έλλ¨Έμ€]level.3 -νλ Έμ΄μ ν(C++) (2) | 2023.07.22 |
[νλ‘κ·Έλλ¨Έμ€]level.2 - νν(C++) (0) | 2023.07.18 |
[νλ‘κ·Έλλ¨Έμ€]level.2 - μ μ°κΈ°(C++) (0) | 2023.07.17 |
[νλ‘κ·Έλλ¨Έμ€]level.2 - 124 λλΌμ μ«μ(C++) (0) | 2023.07.14 |