반응형
from collections import deque
def solution(cacheSize, cities):
answer = 0
buffer = deque()
if cacheSize == 0:
return len(cities) * 5
else:
for i in cities:
i = i.lower() #대소문자 구분 X
if i in buffer: answer += 1
else: answer += 5
if i in buffer: #이미 존재한다면
buffer.remove(i) #제거
else:
if len(buffer) >= cacheSize: #꽉 찼다면
buffer.popleft() #가장 오랫동안 사용되지 않은 튜플 제거
buffer.append(i) #가장 최근으로 추가
return answer
이 문제는 LRU의 개념만 잘 알고 있었다면 푸는데 큰 어려움이 없을 것이다.
정보처리기사 실기 준비만 여러번하면서 LRU는 정확하게 알고 있다.😂
기본적인 개념은 오랫동안 사용되지 않은 페이지를 교체해 주는 것이다.
여기서 캐시크기는 예를 들면 용량이라고 생각하면 될 것이다.
캐시가 3이면 최대 3개의 도시를 기억할 수 있는 것이다. 3개가 꽉찼는데 하나가 들어오려고 한다면
1. 저장되어있는 도시인가? 참조후 최근 참조로 변경
2. 아니라면? 제일 먼저 들어와있던 도시를 제거하고 추가
알고있는 개념을 이렇게 이용하니까 문제를 푸는데 좀 재밌었다.¯\_(ツ)_/¯
반응형
'알고리즘 > 카카오 기출문제' 카테고리의 다른 글
[파이썬🐍] 프로그래머스 : [1차] 뉴스 클러스터링 (0) | 2021.06.29 |
---|---|
[파이썬🐍] 프로그래머스 : 괄호 변환 (0) | 2021.06.26 |
[파이썬🐍] 프로그래머스 : 오픈채팅방 (0) | 2021.05.09 |
[파이썬🐍] 프로그래머스 : 문자열 압축 (0) | 2021.05.07 |
[파이썬🐍] 프로그래머스 : [1차] 다트 게임 (0) | 2021.05.07 |
댓글