비밀지도


In [36]:
arr1 = [9,20,28,18,11]
arr2 = [30,1,21,17,28]
def get_map(arr):
    map_arr = []
    for i in arr:
        map_num = bin(i)[2:]
        if len(arr1)-len(map_num) != 0:
            for l in range(len(arr1)-len(map_num)):
                map_num = "0" + map_num
            map_arr.append(map_num)
        else:
            map_arr.append(map_num)
    return map_arr

def secret_map(map1, map2):
    secret_map = []
    for t in zip(map1,map2):
        secret_row = ""
        for j in range(len(map1)):
            if int(t[0][j])+int(t[1][j]) > 0:
                secret_row += "#"
            else:
                secret_row += " "
        secret_map.append(secret_row)
    return secret_map
            
map1 = get_map(arr1)
map2 = get_map(arr2)
secret_map(map1,map2)


Out[36]:
['#####', '# # #', '### #', '#  ##', '#####']

다트게임


In [113]:
def S(num):
    return num**1
def D(num):
    return num**2
def T(num):
    return num**3
def dart_game(dart):
    score_list = ["S","D","T"]
    sang_list = ["*","#"]
    num=[]
    score=[]
    for i in dart:
        if i.isdigit():
            num.append(i)
        if i in score_list:
            score.append(i)
        if i in sang_list:
            sang.append(i)
    result  = []
    for idx in range(len(num)):
        if score[idx] == "S":
            result.append(S(int(num[idx])))
        if score[idx] == "D":
            result.append(D(int(num[idx])))
        if score[idx] == "T":
            result.append(T(int(num[idx])))
    for i in range(len(sang)):
        bonus = sang.pop(0)
        bodex = dart.index(bonus)
        if bonus == "*":
            if bodex//2-1 != 0:
                result[bodex//2-1] = result[bodex//2-1]*2
                result[bodex//2-2] = result[bodex//2-2]*2
            else:
                result[bodex//2-1] = result[bodex//2-1]*2
        else:
            result[bodex//2-1] = result[bodex//2-1]*(-1)
        dart = dart.replace("*","x",1)
    return sum(result)
dart_game("1D2S3T*")


Out[113]:
59

캐시


In [137]:
a = ["Jeju","Pangyo","Seoul","Jeju","Pangyo","Seoul","Jeju","Pangyo","Seoul"]
size = 3
def lru_cache(cities, size):
    cache = a[:size]
    runtime = 0
    runtime += size*5
    rest = a[3:]
    for i in rest:
        if i not in cache:
            cache.append(i)
            cache.pop(0)
            runtime += 5
        else:
            runtime += 1
    return runtime
lru_cache(a, size)


Out[137]:
21