[ BOJ / Python ] 1253번 좋다

황승환·2022년 6월 16일
0

Python

목록 보기
328/498


이번 문제는 투포인터를 활용하여 해결하였다. 우선 입력받은 리스트를 오름차순으로 정렬하고, for문을 통해 arr을 하나씩 순회하며 현재 arr을 제외한 임시 리스트를 만들고, 이 안에서 가장 왼쪽, 오른쪽 포인터를 만들고, while문을 돌며 두 포인터가 가리키는 값을 더한 값이 현재 arr과 같을 경우 정답 변수를 1 증가시키고 while문을 탈출한다. 두 포인터가 가리키는 값의 합이 현재 arr보다 작을 경우에는 왼쪽 포인터를 1 증가시키고, 그 외에는 오른쪽 포인터를 1 감소시키도록 하였다.

Code

n=int(input())
arr=sorted(list(map(int, input().split())))
answer=0
for i in range(n):
    tmp=arr[:i]+arr[i+1:]
    l, r=0, len(tmp)-1
    while l<r:
        result=tmp[l]+tmp[r]
        if result==arr[i]:
            answer+=1
            break
        if result<arr[i]:
            l+=1
        else:
            r-=1
print(answer)

profile
꾸준함을 꿈꾸는 SW 전공 학부생의 개발 일기

0개의 댓글