반응형
🗓️ 문제 설명
- 캐시 크기(cacheSize)와 도시이름 배열(cities)가 주어지고 입력된 도시이름 배열을 순서대로 처리할 때, 발생한 총 실행시간을 출력하는 코드를 작성해주세요.
- 캐시 교체 알고리즘은 LRU(Least Recently Used)를 사용하여 cache hit일 경우에는 실행시간이 1이고, cache miss일 경우에는 실행시간은 5입니다.
- 제한 사항
- cacheSize는 정수이며, 범위는 0 ≤ cacheSize ≤ 30
- cities는 도시 이름으로 이뤄진 문자열 배열, 최대 도시 수는 100,000개
- 각 도시 이름은 공백, 숫자, 특수문자 등이 없는 영문자로 구성되며, 대소문자 구분은 없음
- 도시 이름은 최대 20자
- 입출력 예시
캐시크기(cacheSize) | 도시이름(cities) | 실행시간 |
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", "Rome", "Paris", "Jeju", "NewYork", "Rome"] | 60 |
5 | ["Jeju", "Pangyo", "Seoul", "NewYork", "LA", "SanFrancisco", "Seoul", "Rome", "Paris", "Jeju", "NewYork", "Rome"] | 52 |
2 | ["Jeju", "Pangyo", "NewYork", "newyork"] | 16 |
0 | ["Jeju", "Pangyo", "Seoul", "NewYork", "LA"] | 25 |
💻 코드
최종 코드
코드 풀이
다른 사람 풀이
더보기

풀이 1번

- 2~3번줄 : 최대 길이를 cacheSize로 지정한 deque 생성
- 5번줄 : 도시 배열에서 도시를 하나씩 꺼내는 반복문 실행
- 6번줄 : 도시를 소문자로 저장
- 7~8번줄 : 도시가 캐시에 있다면 도시를 제거하고, 도시를 다시 추가
- 10번줄 : 시간에 1을 더함
- 11~12번줄 : 도시가 캐시에 없다면 도시를 추가
- 13번줄 : 시간에 5를 더함
알게된 점
더보기
- LRU(Least Recently Used) 알고리즘 : 가장 오랫동안 참조되지 않은 페이지를 교체하는 기법
- 캐시가 사용하는 리소스의 양이 제한되어 있고, 캐시는 제한된 리스트 내에서 데이터를 빠르게 접근할 수 있어야 함
- 장점
- 빠른 액세스 : 가장 최근에 사용한 아이템부터 정렬
- 빠른 업데이트 : 하나의 아이템에 액세스 할때마다 업데이트
- 단점
- 많은 공간 차지
반응형
'코딩문제풀이 > 파이썬' 카테고리의 다른 글
[프로그래머스] 기능개발(파이썬) (0) | 2023.05.09 |
---|---|
[프로그래머스] 카펫 (파이썬) (0) | 2023.05.04 |
[프로그래머스] 귤 고르기 (파이썬) (0) | 2023.04.22 |
[프로그래머스] 신고 결과 받기 (파이썬) (0) | 2023.04.21 |
[프로그래머스] 바탕화면 정리 (파이썬) (0) | 2023.04.20 |