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 |
Tags
- 맛집
- Servlet
- 맛집 투어
- 2589
- 문자열 압축
- 서블릿
- 알고리즘
- dp
- Spring
- BFS
- 쓰레드 풀
- 호유동
- 포두부 보쌈
- 투어
- 양꼬치
- 2638
- 설탕 배달
- 고모네 콩탕
- HTTP API
- 백준
- 스프링 MVC
- 2020 KAKAO BLIND
- 다이나믹 프로그래밍
- 동적 프로그래밍
- 완도산회
- mvc
- 스프링
- 1로 만들기
- 2839
- 프로그래머스
Archives
- Today
- Total
프로그래밍 공방
[프로그래머스] 캐시 본문
문제
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, Rome, Paris, Jeju, NewYork, Rome] 60 5 [Jeju, Pangyo, S
programmers.co.kr
문제해결방법
1. 도시 이름을 키, 들어온 시간을 값으로 하는 Map을 생성한다.
2. 도시 배열을 앞에서부터 돌면서 Map에 존재하면 1을 더하면서 값을 최근 시간으로 업데이트 해준다.
3. 도시 이름이 Map에 없다면 5를 더하면서 최근 시간을 값으로 해서 Map에 넣어준다.
4. 만약 Map의 사이즈가 cache 사이즈보다 크다면 Map에서 가장 작은 시간을 가지고 있는 키를 제거해준다.
5. 위 과정을 도시 배열의 끝까지 진행하며 시간을 카운트 한다.
코드
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 | package Programmers; import java.util.HashMap; import java.util.Map; public class Solution_캐시 { public static void removeCache(Map<String, Integer> cache) { int ttl = Integer.MAX_VALUE; String k = ""; for(String city : cache.keySet()) { if(ttl>cache.get(city)) { ttl = cache.get(city); k = city; } } cache.remove(k); } public static int solution(int cacheSize, String[] cities) { int answer = 0; Map<String, Integer> cache = new HashMap<>(); int ttl = 0; for(int i=0; i<cities.length; i++) { String city = cities[i].toLowerCase(); if(cache.containsKey(city)) answer++; else { answer += 5; if(cache.size()>cacheSize) removeCache(cache); } cache.put(city, ttl++); } return answer; } public static void main(String[] args) { int cacheSize = 3; String[] cities = {"Jeju", "Pangyo", "Seoul", "Jeju", "Pangyo", "Seoul", "Jeju", "Pangyo", "Seoul"}; System.out.println(solution(cacheSize, cities)); } } | cs |
코드에 대한 피드백이나 더 좋은 아이디어는 언제나 환영입니다.
'개발 > 문제해결' 카테고리의 다른 글
[백준] 10844번 : 쉬운 계단 수 (0) | 2021.01.05 |
---|---|
[백준] 12865번 : 평범한 배낭 (0) | 2021.01.05 |
[프로그래머스] 프렌즈4블록 (0) | 2021.01.05 |
[프로그래머스] 지형 이동 (0) | 2021.01.02 |
[LeetCode] Median of Two Sorted Arrays (0) | 2021.01.01 |