*문제 출처는 프로그래머스에 있습니다.
문제 제목: 캐시 (2단계)
문제 사이트: https://school.programmers.co.kr/learn/courses/30/lessons/17680
문제 설명
나의 풀이
#include <string>
#include <vector>
#include <algorithm>
using namespace std;
int solution(int cacheSize, vector<string> cities) {
int answer = 0;
vector<string> strl;
for (int i = 0; i < cities.size(); i++) {
transform(cities[i].begin(), cities[i].end(), cities[i].begin(), ::tolower);
}
for (string s : cities) {
if (find(strl.begin(), strl.end(), s) - strl.begin() < strl.size()) {
strl.erase(remove(strl.begin(), strl.end(), s), strl.end());
strl.push_back(s);
answer += 1;
}
else {
strl.push_back(s);
answer += 5;
}
if (strl.size() > cacheSize) {
strl.erase(strl.begin());
}
}
return answer;
}
※ 알아야 할 것
10번째 줄의 코드를 이용하여 모든 벡터의 원소들을 소문자로 바꿀 수 있다.
캐시 교체 알고리즘은 LRU(Least Recently Used)를 사용한다.
'코딩테스트(프로그래머스 & 백준) > 프로그래머스-C++' 카테고리의 다른 글
Programmers / 튜플 / C++ (0) | 2024.03.07 |
---|---|
Programmers / 행렬의 곱셈 / C++ (0) | 2024.03.06 |
Programmers / 전화번호 목록 / C++ (0) | 2024.03.05 |
Programmers / 바탕화면 정리 / C++ (0) | 2024.03.05 |
Programmers / 기능개발 / C++ (0) | 2024.03.04 |