728x90
https://programmers.co.kr/learn/courses/30/lessons/17680?language=python3#
from collections import deque
def solution(cacheSize, cities):
answer = 0
cache_set = set()
cache = deque()
for i in range(len(cities)):
city = cities[i].lower()
if city in cache_set:
cache.remove(city)
cache.append(city)
answer += 1
else:
if cacheSize and len(cache_set) >= cacheSize:
cache_set.remove(cache.popleft())
if cacheSize:
cache_set.add(city)
cache.append(city)
answer += 5
return answer
set 을 사용해서 중복이 있는지 확인했다.
그리고 deque를 사용하여 사용된 값은 맨뒤로 보내는 작업을 했다.
from collections import deque
def solution(cacheSize, cities):
answer = 0
cache = deque()
for i in range(len(cities)):
city = cities[i].lower()
if city in cache:
cache.remove(city)
cache.append(city)
answer += 1
else:
if cacheSize:
if len(cache) >= cacheSize:
cache.popleft()
cache.append(city)
answer += 5
return answer
set을 사용하지 않아도 된다.
deque에 maxlen 이라는 인자를 사용하면 조금더 쉽게 구현할수 있다.
'STUDY > Algorithm' 카테고리의 다른 글
[백준] 16236 아기 상어, python (0) | 2021.07.22 |
---|---|
[백준] 20057 마법사 상어와 토네이도 python (0) | 2021.07.20 |
[프로그래머스] 쿼드압축 후 개수 세기, 월간 코드 챌린지 시즌1, python (0) | 2021.07.18 |
[백준] 1916 최소비용 구하기 python (0) | 2021.07.15 |
[백준] 14503 로봇 청소기 python, C (0) | 2021.07.13 |