728x90
투포인터 알고리즘O(N)
1차원 배열이 있고 이 배열에서 각자 다른 원소를 가리키고 있는 2개의 포인터를 조작해가며 원하는 것을 얻는 형태
출처: m.blog.naver.com/kks227/220795165570
투 포인터(Two Pointers Algorithm), 슬라이딩 윈도우(Sliding Window) (수정: 2019-09-09)
조금 성향이 비슷하다고 생각하는 기법 2개를 함께 쓰려 합니다.첫 번째로 소개해드릴 기법은 투 포인터(tw...
blog.naver.com
이진탐색도 2개의 포인트로 움직이는 것은 동일하지만 다른점은 이진탐색은 탐색의 범위가 줄어든다는 점이고
투포인터 알고리즘은 그렇지 않다. 또한, 이진탐색은 정렬이 필요하지만 투포인터는 그렇지 않다.
따라서 투포인터는 O(N), 이진탐색은 O(logN)의 복잡도를 가진다.
투포인터로 푸는 방법
from collections import Counter
t=int(input())
n=int(input())
a=list(map(int, input().split()))
m=int(input())
b=list(map(int,input().split()))
def toPointer(lst,l):
r=[]
for i in range(l):
temp=0
for j in range(i,l):
temp += lst[j]
r.append(temp)
return r
al = toPointer(a,n)
bl = toPointer(b,m)
result = 0
c = Counter(bl)
for i in al:
result+=c[t-i]
print(result)
blog.naver.com/PostView.nhn?blogId=hands731&logNo=221885544050
백준 2143번 : [파이썬] 두 배열의 합
문제 : https://www.acmicpc.net/problem/21431. 우선 배열 a,b 의 연속된 부분수열의 합을 구해준다. (각...
blog.naver.com
728x90
'BOJ' 카테고리의 다른 글
[BinarySearch] 기타 레슨 (0) | 2020.12.11 |
---|---|
[BinarySearch] 개똥벌레 (0) | 2020.12.08 |
[BinarySearch] 게임 1072 (0) | 2020.12.08 |
[BinarySearch w/LIS] 반도체설계 (0) | 2020.12.06 |
[BinarySearch] K번째 수 1300번 (0) | 2020.12.03 |
댓글