알고리즘 문제들 으악/백준

[python]3273번 두 수의 합, 투 포인터 알고리즘

빈나 2023. 1. 29. 17:21
반응형

첫 투포인터 분류 문제였다.

본격적인 투포인터 들어가기전에 개념을 다지는 문제였다.

 

투포인터 개념에 대해 검색을 해보다 찾은 유튜브 영상이다

https://www.youtube.com/watch?v=SrMk-EdWRUE 

위 영상에서 2번째 문제가 이번 문제와 상황이 같아

그 개념을 토대로 풀었다.

 

ttl = int(input())
call = sorted(list(map(int,input().split()))) #배열을 오름차순으로 정렬시켜 값 찾기에 용이하게 했다.
std = int(input())
rst = 0
start = 0
end = ttl-1
while start<end: #start이 end보다 작아야 했다. 그래야 둘이 같은 칸에 있을 때 중복으로 더하지 않기 때문이다.
    tmp = call[start]+call[end] #임시 합
    if tmp>std: #임시 합이 기준보다 클 시, end값을 앞으로 땡김
        end-=1
    elif tmp<std: #임시 합이 기준보다 작을 시, start값을 앞으로 밂
        start+=1
    else: #같을 시, rst갱신해주고 start나 end값을 갱신시켜 값을 변화 시켜준다.
        rst+=1
        start+=1
print(rst)
반응형