-
[프로그래머스] LV2. 1차 캐시알고리즘 2023. 3. 27. 14:40728x90
문제
https://school.programmers.co.kr/learn/courses/30/lessons/17680
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
접근
1. LRU 는 가장 오랫동안 사용하지 않은 페이지를 교체하는 알고리즘이다.
2. stack을 사용해서 해결하면 되는데 주의할점이 2가지가 있었다.
( 주의할점 1번. stack에 포커싱하다보면 현재 값이 stack에 들어있을때 아무런 생각없이 stack.pop(0)을 해주는 경우가 생길 수 있다. 이때는 stack.pop(stack.index(i)) 를 해줘야 한다!! -> 20번째줄 코드 )
( 주의할점 2번. cacheSize == 0 인 경우를 고려하자 -> 5번줄 코드 )풀이
def solution(cacheSize, city): ans = 0 cities = [] if cacheSize == 0: return len(city) * 5 for i in city: cities.append(i.lower()) stack = [] for i in cities: if len(stack) == 0: stack.append(i) ans += 5 else: if i in stack: ans += 1 stack.append(stack.pop(stack.index(i))) else: if len(stack) == cacheSize: stack.pop(0) stack.append(i) ans += 5 return ans
'알고리즘' 카테고리의 다른 글
[프로그래머스] 실패율 (0) 2023.04.06 [프로그래머스] [3차] n진수 게임 (0) 2023.03.28 [프로그래머스] LV2. 주차요금 계산 (0) 2023.03.20 [프로그래머스] LV1. 모의고사 (0) 2023.03.13 [프로그래머스] LV1. 성격 유형 검사하기 (0) 2023.03.13