문제 링크:
카카오 신입 공채 1차 코딩 테스트 문제 해설
‘블라인드’ 전형으로 실시되어 시작부터 엄청난 화제를 몰고 온 카카오 개발 신입 공채. 그 첫 번째 관문인 1차 코딩 테스트가 지난 9월 16일(토) 오후 2시부터 7시까지 장장 5시간 동안 온라인으로 치러졌습니다. 지원자들의 개발 능력을 잘 검증하기 위해 출제 위원들이 한 땀 한 땀 독창적이고 다양한 문제들을 만들어 냈고 문제에 이상은 없는지, 테스트케이스는 정확한지 풀어보고 또 풀어보며 […]
tech.kakao.com
입출력:
TC# | 입력 | 출력 |
1 | 3 Jeju Pangyo Seoul NewYork LA Jeju Pangyo Seoul NewYork LA |
50 |
2 | 3 Jeju Pangyo Seoul Jeju Pangyo Seoul Jeju Pangyo Seoul |
21 |
3 | 2 Jeju Pangyo Seoul NewYork LA SanFrancisco Seoul Rome Paris Jeju NewYork Rome |
60 |
4 | 5 Jeju Pangyo Seoul NewYork LA SanFrancisco Seoul Rome Paris Jeju NewYork Rome |
52 |
5 | 2 Jeju Pangyo NewYork newyork |
16 |
6 | 0 Jeju Pangyo Seoul NewYork LA |
25 |
코드:
#include <iostream>
#include <vector>
#include <string>
#include <list>
using namespace std;
int cacheSize;
string city;
vector<string> cities;
list<string> cache;
int t;
int main() {
cin >> cacheSize;
while (!cin.eof()) {
string str, city;
cin >> str;
for (auto ch : str) {
if ('A' <= ch && ch <= 'Z')
city.push_back(ch + 'a' - 'A');
else
city.push_back(ch);
}
cities.push_back(city);
}
if (cacheSize == 0) {
cout << cities.size() * 5;
return 0;
}
int i = 0;
for (i = 0; i < cacheSize; ++i) {
cache.push_back(cities[i]);
t += 5;
}
for (; i < cities.size(); ++i) {
auto it = find(cache.begin(), cache.end(), cities[i]);
if (it != cache.end()) { // cache hit
++t;
cache.erase(it);
cache.push_back(cities[i]);
}
else { // cache miss
t += 5;
cache.erase(cache.begin());
cache.push_back(cities[i]);
}
}
cout << t;
return 0;
}