본문 바로가기

Algorithm

2018 KAKAO BLIND RECRUITMENT[1차] 캐시

반응형

https://programmers.co.kr/learn/courses/30/lessons/17680

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

 

LRU 구현

 

#include<iostream>
#include <string>
#include <vector>
#include<algorithm>

using namespace std;

bool check(string str1,string str2)
{
    
    for(int i = 0; i < str1.size(); i++)
    {
        if(str1[i] >= 'A' && str1[i] <= 'Z')
        {
            str1[i] += 32;
        }
    }
    
    
    for(int i = 0; i < str2.size(); i++)
    {
        if(str2[i] >= 'A' && str2[i] <= 'Z')
        {
            str2[i] += 32;
        }
    }
    
    if(str1 == str2)
    {
        return true;
    }
    return false;
    
}


int solution(int cacheSize, vector<string> cities) {
    int answer = 0;
 
    
    vector<pair<int,string> > vec;
    for(int i = 0; i < cities.size(); i++)
    {
        
        for(int j = 0; j < vec.size(); j++)
        {
            vec[j].first++;
        }
        
        bool flag = false;
        for(int j = 0; j < vec.size(); j++)
        {
            if(check(vec[j].second,cities[i]))
            {
                answer += 1;
                flag = true;
                vec[j].first = 0;
                break;
            }
        }
        
        
        if(!flag)
        {
            answer += 5;
            if(vec.size() < cacheSize)
            {
                vec.push_back({0,cities[i]});
            }
            else
            {
                sort(vec.begin(),vec.end());
                if(vec.size())
                {
                    vec[cacheSize-1] = {0,cities[i]};
                }
                
            }
        }
    }
    
    
    return answer;
}
반응형