반응형
https://school.programmers.co.kr/learn/courses/30/lessons/17680
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
def solution(cacheSize, cities):
cache = []
result = 0
for city in cities:
city = city.lower()
if cacheSize == 0:
result += 5
else:
if city in cache:
result += 1
if len(cache) >= cacheSize:
cache.remove(city)
cache.append(city)
else:
cache.append(city)
else:
result += 5
if len(cache) >= cacheSize:
cache.pop(0)
cache.append(city)
else:
cache.append(city)
return result
문제에서 주어진 조건을 확인하면서 구현으로 해결하였습니다.
도시의 이름을 모두 소문자로 변경하여 "NewYork"과 "newyork"을 모두 "newyork"으로 처리하여 진행하였습니다.
cache의 크기가 0인 경우에는 모든 도시를 cache miss로 실행시간을 5로 판단하였습니다.
캐시에 도시가 존재하는 경우에는 cache hit으로 실행시간을 1로 판단하고
캐시가 꽉찬 경우에 비어있는 경우를 나누어 진행하였습니다.
먼저 캐시가 꽉찬 경우에는 해당 도시를 제거하고 도시를 다시 캐시에 담아 캐시의 순위를 교체하였습니다.
캐시가 비어있는 경우에는 도시를 그대로 캐시에 담았습니다.
캐시에 도시가 존재하지 않는 경우에는 cache miss로 실행시간을 5로 판단하고
역시 캐시가 꽉찬 경우와 비어있는 경우를 나누어 판단하였습니다.
먼저 캐시가 꽉찬 경우에는 가장 pop(0)로 가장 오래된 도시를 제거하고 현재 도시를 캐시에 담았습니다.
캐시가 비어있는 경우에는 도시를 그대로 캐시에 담았습니다.
반응형
'코딩테스트' 카테고리의 다른 글
[코딩테스트] 프로그래머스 카펫 파이썬(Python) (0) | 2022.11.24 |
---|---|
[코딩테스트] 프로그래머스 경기도에 위치한 식품창고 목록 출력하기 MySQL (0) | 2022.11.23 |
[코딩테스트] 프로그래머스 DATETIME에서 DATE로 형 변환 MySQL (0) | 2022.11.22 |
[코딩테스트] 백준 N과 M (2) 파이썬(Python) (0) | 2022.11.22 |
[코딩테스트] 백준 N과 M (1) 파이썬(Python) (0) | 2022.11.22 |