프로그래머스 코딩테스트 고득점 Kit의 문제입니다.
https://programmers.co.kr/learn/challenges?tab=algorithm_practice_kit
문제
https://programmers.co.kr/learn/courses/30/lessons/17680
내가 작성한 코드
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 |