https://www.acmicpc.net/problem/3273
3273번: 두 수의 합
n개의 서로 다른 양의 정수 a1, a2, ..., an으로 이루어진 수열이 있다. ai의 값은 1보다 크거나 같고, 1000000보다 작거나 같은 자연수이다. 자연수 x가 주어졌을 때, ai + aj = x (1 ≤ i < j ≤ n)을 만족하는
www.acmicpc.net
풀이
투 포인터 알고리즘을 이용하여 풀어주면 됩니다. 투포인터를 사용하기 위해 주어진 수열을 정렬해야한다는 것을 잊지말아야합니다.
# 3273번 두 수의 합
n = int(input())
nums = list(map(int, input().split()))
nums.sort()
key = int(input())
left, right = 0, n-1
ans = 0
while left < right:
total = nums[left] + nums[right]
if key == total:
ans += 1
if total < key:
left += 1
continue
right -= 1
print(ans)
출력결과
'백준 > 구현' 카테고리의 다른 글
[백준] 9093번 단어뒤집기 - 파이썬 (0) | 2022.03.25 |
---|---|
[백준] 2292번 벌집 - 파이썬 (0) | 2022.03.24 |
[백준] 3009번 네 번째 점 - 파이썬 (0) | 2022.03.21 |
[백준] 10808번 알파벳 개수 - 파이썬 (0) | 2022.03.18 |
[백준] 2960번 에라토스테네스의 체 - 파이썬 (0) | 2022.03.17 |