-
프로그래머스 Lv2 [1차]캐시Computer Science/프로그래머스 2023. 9. 28. 16:38
https://school.programmers.co.kr/learn/courses/30/lessons/17680
나는 이 문제를 deque를 사용해서 풀었다.
캐쉬에서 데이터를 조회 후 캐쉬에 데이터가 있으면 데이터를 찾을 때 사용한 인덱스로 캐쉬에 중복 된 데이터를 삭제했다.
데이터가 없으면 캐쉬에서 제일 앞에 값을 삭제하고, 데이터를 추가했다.
#include <string> #include <vector> #include <deque> #include <iostream> using namespace std; int solution(int cacheSize, vector<string> cities) { int answer = 0; deque<string> cache; for(int i = 0; i < cities.size(); ++i) { string city; for(int j = 0; j < cities[i].size(); ++j) { city += tolower(cities[i][j]); } bool bhit = false; int index = 0; for(index = 0; index < cache.size(); ++index) { if(cache[index] == city) { bhit = true; break; } } cache.push_back(city); if(bhit) { cache.erase(cache.begin() + index); answer += 1; } else { if(cache.size() > cacheSize) cache.pop_front(); answer+= 5; } } return answer; }
'Computer Science > 프로그래머스' 카테고리의 다른 글
프로그래머스 Lv2 [1차]뉴스 클러스터링 (0) 2023.09.29 프로그래머스 [1차]프렌즈4블록 (0) 2023.09.28 프로그래머스 Lv2 [3차]압축 (0) 2023.09.26 프로그래머스 Lv2 [3차]파일명 정렬 (0) 2023.09.26 프로그래머스 Lv2 [3차]n진수 게임 (0) 2023.09.26