코딩 테스트/프로그래머스

Lv2. [1차] 캐시

  • -
728x90
반응형

문제 보기 :  [1차] 캐시

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 


문제

  • 정답률 : 64%


작성 코드

def solution(cacheSize, cities):
    answer = 0
    d =[]
    for i in cities:
        i= i.upper()
        a = answer
        if cacheSize == 0:
            answer += 5
        elif i not in d and len(d)<cacheSize:
            d.append(i)
            answer += 5
        elif i not in d and len(d) == cacheSize:
            d = d[1:]
            d.append(i)
            answer += 5
        elif i in d and len(d) == cacheSize:
            d.remove(i)
            d.append(i)
            answer += 1
        elif i in d and len(d)<cacheSize:
            d.remove(i)
            d.append(i)
            answer += 1
    return answer

풀이

웃기게도(?) cache에 대해 잘 몰라서 오래 걸린 문제였다

  • cache hit일 경우 실행시간은 1이다.
  • cache miss일 경우 실행시간은 5이다.

위의 조건에 따라 문제를 해결해야하는데, cache에 데이터를 입력하면 1의 시간이 걸리고, 빼는 경우 5의 시간이 걸리는 것으로 이해했다. 그래서 자꾸 에러가 발생했다ㅠㅠ그러나 문제에서 의도한 바는 cache에 cities 내 원소가 있을 때 1의 시간이 소요, 없을 땐 5의 시간이 소요된다는 말이었다.LRU는 아래의 그림을 참고했다


참고문헌 :

LRU(Least Recently Used) 알고리즘 이란 (velog.io)

 

LRU(Least Recently Used) 알고리즘 이란

문제 풀다가 LRU알고리즘에 대한 문제가 나와서 정리해보려고 한다. LRU는 페이지 교체 알고리즘 중 하나이므로 페이지 교체 알고리즘 먼저 알아보자!페이징 기법으로 메모리를 관리하는 운영체

velog.io

320x100
728x90

'코딩 테스트 > 프로그래머스' 카테고리의 다른 글

Lv2. 프로세스  (0) 2024.08.06
Lv0. 연속된 수의 합  (0) 2024.08.06
Lv2. H-Index  (0) 2024.08.01
Lv2. 의상  (0) 2024.08.01
Lv2. 짝지어 제거하기  (0) 2024.07.27
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.