[프로그래머스] Level2, 캐시 (Python)

2021. 6. 14. 20:15·알고리즘/프로그래머스
728x90
반응형

문제

https://programmers.co.kr/learn/courses/30/lessons/17680?language=python3 

 

코딩테스트 연습 - [1차] 캐시

3 ["Jeju", "Pangyo", "Seoul", "NewYork", "LA", "Jeju", "Pangyo", "Seoul", "NewYork", "LA"] 50 3 ["Jeju", "Pangyo", "Seoul", "Jeju", "Pangyo", "Seoul", "Jeju", "Pangyo", "Seoul"] 21 2 ["Jeju", "Pangyo", "Seoul", "NewYork", "LA", "SanFrancisco", "Seoul", "Ro

programmers.co.kr

 

코드

def solution(cacheSize, cities):
    answer = 0
    stack = []
    for i in cities:
        if cacheSize == 0:
            return 5 * len(cities)
        i = i.lower()
        if i in stack:
            stack.remove(i)
            stack.append(i)
            answer += 1
        else:
            answer += 5
            stack.append(i)
            if len(stack) > cacheSize:
                stack.pop(0)
    return answer

cacheSize가 주어지고 cache안에 있는 도시이름을 사용할 때는 1이 들고 cache에 없을 경우에는 5에 시간이 든다.

만약 cacheSize가 0일 경우는 무조건 5에 시간이 들기 때문에 5 * len(cities)를 리턴해준다.

 

대문자 소문자를 구별 안해주므로 모두 같게 소문자로 만들어서 비교한다.

stack에 i가 존재한지 확인 후 존재한다면 stack에 존재하는 i를 제거하고 새로 append를 시켜준다.

 

stack에 i가 존재하지 않을 경우에는 stack에 append를 시키는데 만약 stack이 꽉찻다면 pop(0)을 해줘 가장 먼저 들어온 값을 빼준다. 

왜냐하면 캐시교체 알고리즘은 LRU를 사용하기 때문에 가장 오래된 값을 빼준다.

(LRU는 가장 오랫동안 참조되지 않은 페이지를 교체하는 기법)

반응형
저작자표시 (새창열림)

'알고리즘 > 프로그래머스' 카테고리의 다른 글

[프로그래머스] Level2, 3차 압축 (Python)  (0) 2021.06.16
[프로그래머스] Level2, 3차 파일명 정렬 (Python)  (0) 2021.06.16
[프로그래머스] Level2, 문자열 압축 (Python)  (0) 2021.06.13
[프로그래머스] Level2, 괄호 변환 (Python)  (0) 2021.06.13
[프로그래머스] Level2, 구명보트 (Python)  (0) 2021.06.12
'알고리즘/프로그래머스' 카테고리의 다른 글
  • [프로그래머스] Level2, 3차 압축 (Python)
  • [프로그래머스] Level2, 3차 파일명 정렬 (Python)
  • [프로그래머스] Level2, 문자열 압축 (Python)
  • [프로그래머스] Level2, 괄호 변환 (Python)
wookcode
wookcode
공부한 내용들을 정리하고 기록하는 블로그입니다.
    반응형
  • wookcode
    wookcode
    wookcode
  • 전체
    오늘
    어제
    • 카테고리 (196) N
      • study (1) N
        • 아파치 카프카 애플리케이션 프로그래밍 with 자.. (0)
        • 인프런 (1) N
      • Live Study (15)
      • Programming (14)
        • Java (8)
        • Python (1)
        • Springboot (5)
        • MSA (0)
      • 알고리즘 (117)
        • 백준 (58)
        • 프로그래머스 (59)
      • 에러로그 (5)
      • 항해99 (23)
      • 면접 (1)
      • 프로젝트 (1)
      • CS (19)
        • 네트워크 (2)
        • 운영체제 (2)
        • 데이터베이스 (2)
        • 컴퓨터구조 (1)
        • Java (8)
        • Spring (4)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    항해99
    spring
    해결
    브루트포스
    항해마켓
    그리디
    카카오코딩테스트
    괄호
    카카오인턴
    jpa
    김영한
    백준
    SpringBoot
    SFlash
    java
    알고리즘
    조합
    스파르타코딩클럽
    회고
    에러
    파이썬
    실전프로젝트
    코딩테스트
    후기
    버그
    프로그래머스
    정리
    미니프로젝트
    인프런
    orm
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.4
wookcode
[프로그래머스] Level2, 캐시 (Python)
상단으로

티스토리툴바