https://www.acmicpc.net/problem/1253
오늘 풀어볼 문제는 '좋다'라는 문제이다.
굉장히 간단하면서도, 막상 구현하려니 쉽지 않은 골드 문제이다.
n=int(input())
data=list(map(int,input().split()))
data.sort()
answer=0
for i in range(n):
num=data[i]
left=0
right=n-1
while left!=right:
temp=data[left]+data[right]
if i==left:
left+=1
continue
if i==right:
right-=1
continue
if temp==num:
answer+=1
break
elif temp<=num:
left+=1
elif temp>num:
right-=1
print(answer)
우선, 데이터에 모든 숫자들을 저장하고, 순서대로 나열한다.
모든 숫자에 대해서, left node와 right node를 정하여 투 포인터로 설정하였다.
'Computer Science > Algorithm' 카테고리의 다른 글
[Python 3] BOJ 23288 주사위 굴리기 2 (0) | 2024.03.05 |
---|---|
[Python 3] BOJ 2036 수열의 점수 (0) | 2024.03.04 |
[Python 3] BOJ 26093 고양이 목에 리본 달기 (0) | 2024.02.24 |
[Python 3] BOJ 31423: 신촌 통폐합 계획 (0) | 2024.02.21 |
[Python 3] BOJ 23743 방탈출 (1) | 2024.02.18 |