728x90
📌문제 출처
백준 단계별 문제풀이 : 투 포인터
https://www.acmicpc.net/problem/3273
❓ 문제
📗 풀이 코드
'''
1. 입력받은 nums를 오름차순 정렬해준다.
2. 두개의 포인터를 left=0와 right=n-1로 nums의 양쪽 끝 인덱스로 지정해준다.
3. while문 : nums[left]+nums[right]가 x인지 확인
if x보다 작다면 : x보다 크거나 같아질때까지 left+=1, continue
위 if문 통과 시
if x와 같다면 정답 +1
x와 같던, 크던 포인터는 이동해줘야되므로 right-=1
'''
input = open(0).readline
def solution():
n = int(input())
nums = sorted(list(map(int,input().split())))
x = int(input())
left,right = 0,n-1
cnt = 0 # 쌍의 수
while left < right :
tmp_x = nums[left] + nums[right]
if x > tmp_x:
left+=1
continue
if x == tmp_x :
cnt+=1
right-=1
return cnt
if __name__ == '__main__':
print(solution())
'파이썬 문제풀이' 카테고리의 다른 글
[백준 파이썬] 1806 부분합 (0) | 2023.10.25 |
---|---|
[백준 파이썬] 2470 두 용액 (0) | 2023.10.25 |
[백준 파이썬] 11657 타임머신 (0) | 2023.10.15 |
[백준 파이썬] 1753 최단경로 (0) | 2023.10.14 |
[백준 파이썬] 1654 랜선 자르기 (0) | 2023.10.13 |