코드
# 두 수의 합을 구하는 것
# 두 포인터를 이용하면 쉽게 해결 가능
# 두포인터를 이용하기 위해서는 리스트를 정렬해야함에 주의
n = int(input())
lst = [*map(int, input().split())]
x = int(input())
lst.sort() # 두 포인터를 사용하기 위해서 정렬
s,e = 0, n-1
res = 0
while s<e:
if lst[s]+lst[e] == x:
res += 1
# 서로 다른 수들이기 때문에 s는 증가 e는 감소 시켜주면 된다
s+=1
e-=1
elif lst[s]+lst[e] >x:
# 큰 값을 줄여서 값을 맞춰주어야 한다
e -= 1
elif lst[s]+lst[e] <x:
# 작은 값을 올려서 값을 맞춰주어야 한다
s += 1
print(res)
두 포인터 문제
'백준' 카테고리의 다른 글
[백준] 4386번 별자리 만들기 파이썬 코드 (1) | 2024.02.03 |
---|---|
[백준] 16398번 행성 연결 파이썬 코드 (1) | 2024.02.03 |
[백준] 2485번 가로수 파이썬 코드 (1) | 2024.02.03 |
[백준] 20310번 타노스 파이썬 코드 (0) | 2024.02.01 |
[백준] 10775번 공항 파이썬 코드 (1) | 2024.02.01 |