Processing math: 100%
본문 바로가기
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

댓글