-
[2018 1차 KAKAO] 캐시Study/Coding Test 2021. 10. 8. 16:58
https://programmers.co.kr/learn/courses/30/lessons/17680
코딩테스트 연습 - [1차] 캐시
3 ["Jeju", "Pangyo", "Seoul", "NewYork", "LA", "Jeju", "Pangyo", "Seoul", "NewYork", "LA"] 50 3 ["Jeju", "Pangyo", "Seoul", "Jeju", "Pangyo", "Seoul", "Jeju", "Pangyo", "Seoul"] 21 2 ["Jeju", "Pangyo", "Seoul", "NewYork", "LA", "SanFrancisco", "Seoul", "Ro
programmers.co.kr
#include <string> #include <vector> #include <iostream> #include <algorithm> #include <cctype> using namespace std; int solution(int cacheSize, vector<string> cities) { int answer = 0; vector<string> cache(cacheSize); if(cache.size() == 0){ return cities.size()*5; } for(int i=0; i<cities.size(); i++){ string lowerCities = " "; for(int j=0; j<cities[i].size(); j++){ lowerCities += tolower(cities[i][j]); } auto iter = find(cache.begin(), cache.end(), lowerCities); if(iter != cache.end()){ //찾았을때 cache.erase(iter); cache.push_back(lowerCities); answer+=1; } else{ if(cacheSize>0 && cache.size() == cacheSize){ cache.erase(cache.begin()); } cache.push_back(lowerCities); answer+=5; } } return answer; }
구현하기에는 어렵지 않았지만, 반례를 찾기 힘들었다.
cacheSize가 0이고 cities가 ["LA", "LA"]인 경우에 10이 나와야하는데 6이 나오는 부분을 해결하니 통과되었다.
'Study > Coding Test' 카테고리의 다른 글
[2018 1차 KAKAO] 뉴스 클러스터링 (0) 2021.10.10 [2018 1차 KAKAO] 셔틀버스 (0) 2021.10.08 [2018 1차 KAKAO] 다트 게임 (0) 2021.10.07 [2018 1차 KAKAO] 비밀지도 (0) 2021.10.07 [2020 KAKAO] 자물쇠와 열쇠 (0) 2021.10.05