프로그래머스 코딩테스트 고득점 Kit의 문제입니다.
https://programmers.co.kr/learn/challenges?tab=algorithm_practice_kit
코딩테스트 연습
기초부터 차근차근, 직접 코드를 작성해 보세요.
programmers.co.kr
문제
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
내가 작성한 코드
from collections import deque
def get_time(cache, cacheSize, city):
# no cache
if cacheSize == 0:
return 5
# cache miss
if city not in cache:
if len(cache) == cacheSize:
cache.popleft()
cache.append(city)
return 5
# cache hit
else:
del cache[cache.index(city)]
cache.append(city)
return 1
def solution(cacheSize, cities):
answer = 0
cache = deque()
for city in cities:
answer += get_time(cache, cacheSize, city.lower())
return answer
- 3가지 케이스로 나눔
- 캐시가 없을 때
- 캐시 미스
- 캐시 히트
- 캐시 미스와 캐시 없는 케이스는 합칠 수 있음
다른 사람이 작성한 코드
def solution(cacheSize, cities):
import collections
cache = collections.deque(maxlen=cacheSize)
time = 0
for i in cities:
s = i.lower()
if s in cache:
cache.remove(s)
cache.append(s)
time += 1
else:
cache.append(s)
time += 5
return time
- 깔끔하다
- 내가 코드 짤 때 함수로 작성할 생각을 왜 했는지 모르겠다
기억해야할 것
- deque(maxlen=cacheSize)
- size가 넘치면 밀어내서 버리는 듯
- deque니까 양쪽으로 버릴듯?
'코딩테스트' 카테고리의 다른 글
[프로그래머스][KAKAO_BLIND][2019] 무지의 먹방 라이브 (0) | 2021.09.01 |
---|---|
[프로그래머스][KAKAO_BLIND][2020] 블록 이동하기 (0) | 2021.09.01 |
[프로그래머스][KAKAO_BLIND][2018] 프렌즈4블록 (0) | 2021.09.01 |
[프로그래머스][KAKAO_BLIND][2021] 매출 하락 최소화 (0) | 2021.09.01 |
[프로그래머스][KAKAO_BLIND][2020] 외벽 점검 (0) | 2021.09.01 |