반응형
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 13908
- BOJ
- 퇴사통보
- softeer
- BFS
- 이분탐색
- 매개변수탐색
- 파라메트릭
- 연결요소
- OFFSET
- compose
- 백트래킹
- 6987
- Docker
- 소프티어
- 경력
- incr
- Kafka
- 오퍼레터
- upper_bound
- dfs
- boj #19237 #어른 상어
- 백준
- 물채우기
- 처우협의
- 기술면접
- @P0
- 처우산정
- msSQL
- 성적평가
Archives
- Today
- Total
기술 블로그
캐시 본문
728x90
반응형
https://programmers.co.kr/learn/courses/30/lessons/17680
2018년 카카오 블라인드 코딩 테스트
캐시 사이즈가 0일 때는 cities.size() * 5를 return 하면 된다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 | #include <bits/stdc++.h> using namespace std; map<int, string> m; int solution(int cacheSize, vector<string> cities) { int answer = 0, t = 1; if (cacheSize == 0) return cities.size() * 5; for (auto now : cities) { string uppernow = ""; for (auto i : now) uppernow += toupper(i); // 꽉 찬 경우 if (m.size() == cacheSize) { bool hit = false; for (auto i : m) if (i.second == uppernow) { answer += 1; // 캐시 히트 hit = true; m.erase(i.first); // 삭제하고 m[t] = uppernow; // 새로운 시간(키값)에 대한 uppernow 추가 break; } if (!hit) // 캐시 히트가 아니라면, 교체 발생(= 캐시 미스) { for (auto i : m) { m.erase(i.first); // 가장 오래 사용되지 않은 것 제거 break; } m[t] = uppernow; // 추가 answer += 5; } } else // 아직 공간이 있는 경우 { bool hit = false; for (auto i : m) // 이미 있는지 검사 if (i.second == uppernow) // 있다면, 캐시 히트 { answer += 1; // 캐시 히트 hit = true; m.erase(i.first); // 시간 갱신을 위해 제거 m[t] = uppernow; // 새로운 시간에 대해 다시 추가 break; } if (!hit) answer += 5, m[t] = uppernow; // 캐시 미스 } ++t; } return answer; } int main(void) { /*vector<string> cities = { "Jeju", "Pangyo", "Seoul", "Jeju", "Pangyo", "Seoul", "Jeju", "Pangyo", "Seoul" };*/ /*vector<string> cities = { "Jeju", "Pangyo", "Seoul", "NewYork", "LA", "Jeju", "Pangyo", "Seoul", "NewYork", "LA" };*/ /*vector<string> cities = { "Jeju", "Pangyo", "NewYork", "newyork" };*/ vector<string> cities = { "Aa", "aa", "Bb", "bB", "C" }; printf("%d\n", solution(0, cities)); return 0; } | cs |
728x90
반응형