본문 바로가기

PS/프로그래머스

[Programmers] 캐시 (Swift)

반응형

문제

https://school.programmers.co.kr/learn/courses/30/lessons/17680

 

프로그래머스

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

programmers.co.kr

풀이

  • 문제를 풀려면 LRU에 대한 지식이 있어야 할 것 같다.
  • LRU란 한 마디로 가장 오랜 시간 사용되지 않은 페이지를 교체하는 알고리즘
  • 본래대로라면 연결리스트, 해쉬맵 등. LRU를 구현해야겠지만, 간단하게 배열로 풀이하였음
  • 캐시 배열에 도시이름이 있다면 cache hit, 캐시 배열에 있는 city를 제거한 후, 캐시의 0번 인덱스에 city를 넣어줬음
  • 캐시 배열에 도시이름이 없다면 cache miss, 캐시의 0번 인덱스에 city를 넣어줌
  • 만약 캐시배열이 캐시 사이즈를 초과했다면 캐시의 마지막 원소를 삭제해줌

소스코드

후기

  • LRU에 대한 지식이 있다면 쉽게 풀이할 수 있는 문제였다.
  • 나중에 연결리스트 혹은 해쉬맵으로 LRU를 구현을 해봐야겠다고 생각했다. 코드상으로는 지저분해보이겠지만 성능상 더 뛰어날 것이라고 예상됨
반응형

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

[Programmers] 타겟 넘버 - Swift  (1) 2022.11.06