-
[프로그래머스 Python] 캐시 (from kakao)Algorithm/1일 1코테 2020. 10. 16. 16:12반응형
문제
programmers.co.kr/learn/courses/30/lessons/17680
내 답
1차 시도
# 정확도 80점으로 통과 X def solution(cacheSize, cities): cache = [] # 캐시 생성 time = 0 if 0 < cacheSize: # 만약 캐시 사이즈가 0보다 크면 for i, c in enumerate(cities): c = c.lower() # 모두 소문자로 통일 if cacheSize-1 < i : # 인덱스가 cache size보다 크고 (더이상 그냥 append X) if c in cache: # 캐시 안에 이미 c가 있으면 ci = cache.index(c) # 해당 인덱스를 찾아 cache.append(cache.pop(ci)) # 빼고, 다시 append (최신 사용이기 때문에) time += 1 else: # 해당 index가 없으면 cache.pop(0) # 가장 사용 X인 첫번째 값 빼고 C append cache.append(c) time += 5 else: # 인덱스가 cache size보다 작으면 그냥 append cache.append(c) time += 5 else: # 캐시 사이즈가 0이면 다른 처리 없이 CITY수 * 5 return len(cities) * 5 return time
2차 시도
# 역시나 정확도 80점으로 통과 X # 좀 더 가독성 좋게 수정 def solution(cacheSize, cities): cache = [] time = 0 # 만약 0이면 그냥 return if cacheSize == 0: return len(cities) * 5 # 만약 0이 아니라면 else: for i, c in enumerate(cities): c = c.lower() if c in cache: cache.pop(cache.index(c)) cache.append(c) time += 1 else: if i < cacheSize : cache.append(c) time += 5 else: cache.pop(0) cache.append(c) time += 5 return time
3차 시도 > 통과
def solution(cacheSize, cities): cache = [] time = 0 # if cacheSize == 0: return len(cities) * 5 else: for i, c in enumerate(cities): c = c.lower() if c in cache: cache.pop(cache.index(c)) cache.append(c) time += 1 else: if len(cache) < cacheSize : #len(cache)로 수정 cache.append(c) time += 5 else: cache.pop(0) cache.append(c) time += 5 return time
다른사람 풀이
def solution(cacheSize, cities): import collections cache = collections.deque(maxlen=cacheSize) time = 0 for i in cities: s = i.lower() if s in cache: cache.remove(s) cache.append(s) time += 1 else: cache.append(s) time += 5 return time
데크 사용한 풀이
인덱스 필요없이 해당 값 삭제가 가능하구만~~~~~~!!
반응형'Algorithm > 1일 1코테' 카테고리의 다른 글
[💕 프로그래머스 Python] 크레인 인형뽑기 게임 (from kakao) (0) 2020.10.17 [🤷♀️ 프로그래머스 Python] 실패율 (from kakao) (0) 2020.10.17 [프로그래머스 Python] 다트게임 (from kakao) (0) 2020.10.14 [프로그래머스 Python] 비밀지도(from kakao) (0) 2020.10.13 [백준 Python] 1094 막대기 (0) 2020.09.27