728x90
반응형
1. 문제 설명
2. 풀이과정
- 리스트보다 연산 속도가 빠르고 popleft() 메서드를 사용할 수 있는 deque 자료구조를 사용하기 위해 deque 모듈을 불러온다. from collections import deque
- 먼저 도시 이름을 저장해 둘 deque을 생성한다. memory = deque()
- 도시 이름을 하나씩 추출하여 for i in cities
- 도시 이름 사이에 대소문자 구별이 없으므로 모두 소문자로 변환해 준다. i = i.lower()
- 만약 도시 이름이 앞에서 나온 적 있다면 if (i in memory)
- chche hit 이므로 실행 시간에 1을 추가한다. answer += 1
- 그리고 해당 도시 이름을 삭제하고 memory.remove(i)
- 제일 뒤에 다시 추가해 준다. memory.append(i)
- 이것은 LRU 알고리즘에 의해 나중에 도시 이름을 저장해 둘 deque이 꽉 찼을 경우 가장 오랫동안 사용하지 않았던 도시 이름을 앞에서부터 제거하기 위한 과정입니다.
- 반면에 도시 이름이 처음 나왔다면 else
- cache miss 이므로 실행 시간에 5를 추가한다. answer += 5
- 그리고 도시 이름을 제일 뒤에 추가한다. memory.append(i)
- 만약 deque 안의 원소 도시 이름 개수가 cacheSize 보다 크면(메모리 초과) if (len(memory) > cacheSize)
- 가장 오랫동안 사용하지 않은 원소인 제일 앞 원소를 제거한다. memory.popleft()
반응형
3. 소스코드
from collections import deque
def solution(cacheSize, cities):
answer = 0
memory = deque()
for i in cities:
i = i.lower()
if (i in memory):
answer += 1
memory.remove(i)
memory.append(i)
else:
answer += 5
memory.append(i)
if (len(memory) > cacheSize):
memory.popleft()
return answer
728x90
반응형
'프로그래머스 > Python' 카테고리의 다른 글
[프로그래머스] 카드 뭉치 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 (0) | 2023.07.23 |
---|---|
[프로그래머스] 튜플 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 (0) | 2023.07.22 |
[프로그래머스] 과일 장수 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 (0) | 2023.07.22 |
[프로그래머스] 의상 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 (0) | 2023.07.22 |
[프로그래머스] 행렬의 곱셈 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 (0) | 2023.07.19 |
[프로그래머스] 폰켓몬 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 (0) | 2023.07.18 |
[프로그래머스] 명예의 전당(1) - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 (0) | 2023.07.18 |
[프로그래머스] n^2 배열 자르기 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 (0) | 2023.07.16 |