땅지원
땅지원's Personal blog
땅지원
전체 방문자
오늘
어제
  • 전체 (353)
    • Frontend (2)
      • React (2)
    • Backend (90)
      • Java (16)
      • Python (19)
      • Spring (23)
      • Database (21)
      • Troubleshooting (8)
    • DevOps (27)
      • ELK (13)
    • CS (40)
    • OS (2)
      • Linux (2)
    • Algorithm (95)
      • concept (18)
      • Algorithm Problem (77)
    • 인공지능 (25)
      • 인공지능 (12)
      • 연구노트 (13)
    • 수업정리 (35)
      • 임베디드 시스템 (10)
      • 데이터통신 (17)
      • Linux (8)
    • 한국정보통신학회 (5)
      • 학술대회 (4)
      • 논문지 (1)
    • 수상기록 (8)
      • 수상기록 (6)
      • 특허 (2)
    • 삼성 청년 SW 아카데미 (6)
    • 42seoul (12)
    • Toy project (3)
    • 땅's 낙서장 (2)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

  • 20.11.6 BB21플러스 온라인 학술대회
  • 20.10.30 한국정보통신학회 온라인 학술대회

인기 글

태그

  • E
  • 이것이 리눅스다 with Rocky Linux9
  • I
  • D
  • ㅗ

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
땅지원

땅지원's Personal blog

Coding Test(Sliding Window)
Algorithm/concept

Coding Test(Sliding Window)

2022. 6. 6. 18:00

고정 사이즈의 윈도우가 이동하면서 윈도우 내에 있는 데이터를 이요해 문제를 풀이하는 알고리즘

● Brute Force - list slicing 을 이용한 방법

for i in range(len(nums)-k+1):
    r.append(max(nums[i:i+k]))

●  queue을 이용한 방법 (Fast)

for i, v in enumerate(nums):
	window.append(v)
    if i<k-1:
    	continue

 

하지만 이러한 경우는 k 크기 만큼의 윈도우를 리스트에서 계속 탐색 해야하기 때문에 O(k * n)의 시간복잡도를 가진다.

 

 

 

 

● 슬라이딩 윈도우 활용 (구간합, 누적합, Prefix sum)

이렇게 되면 전체 시간 복잡도는 O(N)이 되며 시간복잡도를 많이 줄일 수 있다.

 

투 포인터는 정렬된 상태에서 써야 하지만 슬라이딩 윈도우는 제약을 받지 않고 일정한 윈도우 크기로 움직인다

 

 

 

 

 

 

 

'Algorithm > concept' 카테고리의 다른 글

Coding Test(Kruskal Algorithm)  (0) 2022.08.23
Coding Test(Two Pointer)  (0) 2022.06.06
Coding Test(Union-Find, Disjoint-set)  (0) 2022.05.22
코딩 테스트를 위한 기술 정리  (0) 2022.05.13
Coding Test(Priority Queue, Heap)  (0) 2022.04.30
    'Algorithm/concept' 카테고리의 다른 글
    • Coding Test(Kruskal Algorithm)
    • Coding Test(Two Pointer)
    • Coding Test(Union-Find, Disjoint-set)
    • 코딩 테스트를 위한 기술 정리
    땅지원
    땅지원
    신입 개발자의 우당탕탕 기술 블로그

    티스토리툴바