반응형
1. 문제
2. 코드
n = int(input())
l = list(map(int, input().split()))
x = int(input())
cnt = 0
l.sort()
left = 0
right = n-1
while True:
if l[left] + l[right] == x:
cnt += 1
right -= 1
elif l[left] + l[right] > x:
right -= 1
else:
left += 1
if left >= right:
break
print(cnt)
3. 풀이
투포인터(left, right)를 사용하는 문제.
우선 받은 값을 정렬한다.
l[left] + l[right]가 원하는 값이면 cnt를 증가시키고, right를 이동한다.
원하는 값보다 적으면 합이 더 커져야 하기 때문에 left를 이동하고,
많으면 합이 더 적어져야 하기 때문에 right를 이동한다.
728x90
반응형
'백준' 카테고리의 다른 글
[백준] 1094번 - 막대기 (파이썬) (0) | 2022.02.08 |
---|---|
[백준] 17213번 - 과일 서리 (파이썬) (feat. 중복조합 공식) (0) | 2022.01.30 |
[백준] 1476 - 날짜 계산 (파이썬) (0) | 2022.01.29 |
[백준] 9237번 - 이장님 초대 (0) | 2022.01.21 |
[백준] 3135번 - 라디오 (0) | 2022.01.21 |