본문 바로가기
개발

[Python] 슬라이딩 윈도우

by DenverAlmighty 2020. 8. 16.

1. 연속된 K개 요소의 최대 합 구하기 

배열의 일정한 범위(k개 요소만큼) 1칸씩 미뤄가면서 합계 구해서 max와 비교

def maxSum(arr, n, k):
    if not n > k:
        print("invalid")
        return -1

    max_sum = 0
    window_sum = sum([arr[i] for i in range(k)])
    print(window_sum)

    for i in range(n-k):
        window_sum = window_sum - arr[i] + arr[i+k]
        max_sum = max(window_sum, max_sum)

    return max_sum

arr = [1,3,7,4,8,4,0, 2]
n = len(arr)
k = 3
print(maxSum(arr, n , k))

 

 

2. K종류의 알파벳으로 이루어진 가장 긴 문자열 길이 찾기

def get_key(dic, val): 
    for key, value in dic.items(): 
         if val == value: 
             return key 
    return "key doesn't exist"


def sliding_window(strs):
    n = len(strs)
    if(n < l): return n
    idx = 0
    ridx, lidx = 0, 0
    maxi = 0
    dic = dict()

    while ridx < n:
        if(len(dic) < k):
            dic[strs[ridx]] = ridx
            ridx += 1
        if(len(dic) == k):
            mini = min(dic.values())
            del dic[get_key(dic, mini)]
            lidx = mini + 1
        maxi = max(maxi, ridx-lidx)

    return maxi

print(sliding_window("ABBBBBBBBBBBCDDDDD"))

 

 

 

* list 요소의 합계 구하기

arr = [1, 2, 3, 4, 5]

#list 전체의 합
sum(arr)

#0 ~ k 번째 요소의 합계
sum(arr[i] for i in range(k))

 

* 딕셔너리 valuer로 key 찾기

def get_key(dic, val): 
    for key, value in dic.items(): 
         if val == value: 
             return key 
    return "key doesn't exist"
print(list(my_dict.keys())[list(my_dict.values()).index(VAL)]) 

 

* dictonary 요소 지우기

del dic[KEY]

'개발' 카테고리의 다른 글

[Python] json.dump 한글 깨짐  (0) 2023.03.11
라인 Notify 봇 만들기  (0) 2022.08.29