티스토리 뷰
728x90
문제
https://programmers.co.kr/learn/courses/30/lessons/17680
풀이 및 소스코드
LRU(Least Recently Used)란, 최근에 사용한 것을 최상위 순위에 오래전에 사용한 것을 최하위 순위에 두고, 데이터가 하나 들어온다면 가장 오랫동안 사용하지 않은 것을 빼고 새로운 데이터를 넣는 방법이다.
먼저 cacheSize가 0일 때, 저장할 공간이 없으므로 len(cities)*5 를 return 해줘야 한다.
만약, city가 cache 안에 있다면 answer += 1 한 후에 city 를 cache의 오른쪽 끝에 오게끔 함으로써 우선순위를 높여준다.
cache는 아래와 같이 구성된다.
cache = [가장 먼저 나갈 것, *** , 가장 나중에 나갈 것(즉, 최근에 사용한 것)]
city가 cache 안에 없다면 cache의 얼마나 차있는지 확인해봐야 한다.
cache안에 있는 데이터의 양과 cacheSize가 같다면 가장 오래전에 사용한 데이터를 빼고 넣어줘야 한다.
def solution(cacheSize, cities):
answer = 0
cache = []
if cacheSize == 0:
return len(cities)*5
for city in cities:
city = city.upper()
if city in cache: #city가 캐시안에 있다면
answer += 1
idx = cache.index(city)
if idx != len(cache)-1: #가장 최근에 사용하지 않았다면 중간에 있을테니 맨 끝으로 보내줘야 한다.
cache = cache[:idx]+cache[idx+1:]
cache.append(city)
else:
answer += 5
if len(cache) == cacheSize:
cache = cache[1:]
cache.append(city)
else:
cache.append(city)
return answer
반응형
'Coding - Algo > python' 카테고리의 다른 글
[프로그래머스] 완주하지 못한 선수 (python 파이썬) (0) | 2021.06.23 |
---|---|
[프로그래머스] 핸드폰 번호 가리기 (python 파이썬) (0) | 2021.06.22 |
[프로그래머스] 가장 큰 수 (python 파이썬) (0) | 2021.06.22 |
[프로그래머스] 이중우선순위 큐 (python 파이썬) (0) | 2021.06.20 |
[프로그래머스] 디스크 컨트롤러 (python 파이썬) (2) | 2021.06.17 |
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 1699 자바
- 백준 풀이
- 삼성청년SW아카데미
- yoloV3
- 3996 자바
- 파이썬 풀이
- swea 타일링
- SWEA
- swea 1240
- union-find
- 파이썬
- 프로그래머스 파이썬
- swea 4070 타일링
- 우분투
- 메뉴리뉴얼 풀이
- 프로그래머스 자바
- 백준 17144
- 프로그래머스
- SSAFY
- 백준파이썬
- 1240 자바
- ubuntu
- 타일링 자바
- poker swea
- 백준
- swea 타일링 자바
- swea 1240 자바
- 더 맵게
- 백준 dp 문제
- 프로그래머스 더 맵게
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함