[2018 카카오 블라인드 채용 1차 코딩 테스트] 캐시
2018 KAKAO BLIND RECRUITMENT :: 2018 카카오 블라인드 채용 1차 코딩 테스트 :: 캐시
출처 : https://programmers.co.kr/learn/courses/30/lessons/17680#
#include <string>
#include <vector>
using namespace std;
inline bool check(string s1, string s2) {
if (s1.size() != s2.size()) return false;
for (int i = 0; i < s1.size();i++) {
char tmp = ((s2.at(i) > 90) ? (s2.at(i) - 32) : (s2.at(i) + 32));
if (!(s1.at(i) == s2.at(i) || s1.at(i) == tmp)) return false;
}
return true;
}
int solution(int cacheSize, vector<string> cities) {
int answer = 0;
vector<string> cache;
if (cacheSize == 0) answer = 5 * cities.size();
else {
for (int i = 0; i < cities.size(); i++) {
bool flag = false;
for (int j = 0; j < cache.size(); j++) {
if (check(cache[j], cities[i])) {
cache.erase(cache.begin() + j);
cache.push_back(cities[i]);
answer += 1; flag = true; break;
}
}
if (!flag) {
if (cache.size() < cacheSize) cache.erase(cache.begin());
answer += 5;
cache.push_back(cities[i]);
}
}
}
return answer;
}