from collections import Counter
def makeList(input):
    output = []
    for x in range(0, len(input)-1):
        if input[x].isalpha() and input[x+1].isalpha(): 
            tmp = input[x]+input[x+1]
            output.append(tmp)
    return output

def solution(str1, str2):
    answer = 0
    arr1 = makeList(str1.lower())
    arr2 = makeList(str2.lower())
            
    # 중복 개수
    cnt1 = Counter(arr1)
    cnt2 = Counter(arr2)
    
    intersection = list((cnt1&cnt2).elements())
    union = list((cnt1|cnt2).elements())
    
    if len(intersection)==0 and len(union) ==0:
        return 65536
    answer = int((len(intersection)/len(union))*65536)
    return answer
import re
def solution(s):
    answer = []
    arr = s.split(',{')
    arr.sort(key=len) # 길이 순으로 정렬
    
    for x in arr:
        # 숫자로 해당하는 항목들을 리스트로 변경
        numbers = re.findall('\d+', x)
        for k in numbers:
            if int(k) not in answer:
                answer.append(int(k))
    return answer

LRU(Least Recently Used Alogorithm) 알고리즘

  • 가장 오랜 시간동안 사용하지 않은 페이지를 교체하는 알고리즘
  • 캐시 교체 정책(Cache Replacement Policy) 중 하나 - 이외에 FIFO(First In First Out), LFU(Least Frequently Used)
  • Cache Hit : 참조하려고 하는 메모리가 캐시에 있는 경우
  • Cache Miss : 참조하려고 하는 메모리가 캐시에 없는 경우
def solution(cacheSize, cities): # 캐시크기, 도시이름 -> 총 실행시간 출력
    answer = 0
    # LRU : 가장 오랜 시간동안 사용하지 않은 페이지 교체 알고리즘
    # hit : 참조하려고 하는 메모리가 캐시에 있는 경우
    # miss : 참조하려는 메모리가 캐시에 없는 경우
    
    cache = []
    
    if cacheSize == 0:
        return len(cities)*5
    
    for x in range(len(cities)):
        current = cities[x].lower()
        if current in cache: # 캐시 안에 있는 경우
            answer += 1
            cache.remove(current)
            cache.append(current)
        else: # 캐시 안에 없는 경우
            if len(cache) == cacheSize:
                cache.pop(0)
            cache.append(current)
            answer += 5
    return answer

+ Recent posts