관리 메뉴

민우의 코딩노트

백준 3273번 - 두 수의 합 C++ 본문

Algorithm/BOJ

백준 3273번 - 두 수의 합 C++

미미누 2022. 4. 16. 16:34

[문제]

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

 

[코드]

#include <iostream>
using namespace std;

int arr[10000005]; // 0,1 
int arr2[10000005]; // 숫자 보관

int main() {
    ios::sync_with_stdio(0);
    cin.tie(0);
    
    int n;
    cin >> n;
    int sum =0;
    for(int i=1; i<=n; i++) {
        int t;
        cin >> t;
        arr2[i] = t;
        arr[t] = 1;
    }
    
    int x;
    cin >> x;
    for(int i=1; i<=n; i++) {
        if(arr[arr2[i]] == 0) continue;
        if(arr[x-arr2[i]] && x-arr2[i] != arr2[i]) {
            arr[arr2[i]] = 0;
            arr[x-arr2[i]] = 0;
            sum++;
        }
    }
    cout << sum;
    
    
}

 

'Algorithm > BOJ' 카테고리의 다른 글

백준 2493번 - 탑 C++  (0) 2022.04.23
백준 10807번 - 개수 세기 C++  (0) 2022.04.16
백준 1475번 - C++ 방 번호  (0) 2022.04.14
백준 1931번: 회의실 배정 - C++  (0) 2022.02.26
백준 2217번: 로프 - C++  (0) 2022.02.26