본문 바로가기
BOJ

[BinarySearch] 두 배열의 합

by YGSEO 2020. 12. 11.
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

댓글