Algorithm/📊 Problem Solving

[백준/BOJ] 3273 - 두 수의 합

posted by sangmin

3273 - 두 수의 합

📌 문제

n개의 서로 다른 양의 정수 a1, a2, …, an으로 이루어진 수열이 있다. ai의 값은 1보다 크거나 같고, 1000000보다 작거나 같은 자연수이다. 자연수 x가 주어졌을 때, ai + aj = x (1 ≤ i < j ≤ n)을 만족하는 (ai, aj)쌍의 수를 구하는 프로그램을 작성하시오.

📋 코드

N = int(input())
arr = list(map(int, input().split()))
x = int(input())

arr.sort()
left, right = 0, N-1
result = 0
while left < right:
    if arr[left] + arr[right] > x:
        right -= 1
    elif arr[left] + arr[right] < x:
        left += 1
    else:
        left += 1
        right -= 1
        result += 1

print(result)

💡 한마디

leftright 를 설정해두고, 두 수의 합이 자연수 X 가 되는지 확인해줬다.

 

3273번: 두 수의 합

n개의 서로 다른 양의 정수 a1, a2, ..., an으로 이루어진 수열이 있다. ai의 값은 1보다 크거나 같고, 1000000보다 작거나 같은 자연수이다. 자연수 x가 주어졌을 때, ai + aj = x (1 ≤ i < j ≤ n)을 만족하는

www.acmicpc.net

 

'Algorithm > 📊 Problem Solving' 카테고리의 다른 글

[백준/BOJ] 2725 - 보이는 점의 개수  (0) 2021.02.19
[백준/BOJ] 17164 - Rainbow Beads  (0) 2021.02.19
[백준/BOJ] 2428 - 표절  (0) 2021.02.17
[백준/BOJ] 2075 - N번째 큰 수  (0) 2021.02.15
[백준/BOJ] 2559 - 수열  (0) 2021.02.15