늘 겸손하게

백준 3273 ( C++ ) 본문

코딩 문제/백준

백준 3273 ( C++ )

besforyou999 2021. 7. 24. 13:26

두 수의 합

 

투 포인터 기법으로 x 값에 해당하는 (ai , aj ) 쌍을 찾는 문제

 


문제 풀이

 

1. 서로 다른 n개의 자연수를 입력받아 배열에 저장한다.

 

2. 배열을 정렬시킨다.

 

3. 2개의 변수를 준비하여 한 개의 변수(lp)에는 배열의 첫 번째 인덱스 값을 저장하고 다른 한 개의 변수(rp)에는 배열의 마지막 인덱스값을 저장한다.

 

4. 정답 개수를 저장할 변수를 준비한다. ( ans )

 

4. 배열[lp] + 배열[rp] 값이  x 값보다 작으면 lp++

 

5. 배열[lp] + 배열[rp] 값이  x값보다 크면 rp--

 

6. 배열[lp] + 배열[rp] 값이  x값과 동일하면 ans++ , rp--;

 

7. lp < rp일때 동안 반복

 

 


 

코드

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
#include <iostream>
#include <vector>
#include <algorithm>
 
using namespace std;
 
int main() {
 
    int n;
    cin >> n;
 
    vector<int> v;
 
    int N = n;
 
    while (N--) {
        int temp;
        cin >> temp;
        v.push_back(temp);
    }
 
    int x;
    cin >> x;
 
    sort(v.begin(), v.end());
 
    int lp = 0;
    int rp = n - 1;
    int ans = 0;
 
    while (lp < rp) {
 
        if (v[lp] + v[rp] < x) {
            lp++;
        }
        else if (v[lp] + v[rp] == x) {
            ans++;
            rp--;
        }
        else if (v[lp] + v[rp] > x) {
            rp--;
        }
    }
 
    cout << ans;
 
}
cs

 

 


 

결과

 

'코딩 문제 > 백준' 카테고리의 다른 글

백준 1158 요세푸스 문제 ( C++ )  (0) 2021.08.11
백준 18870 ( C++ )  (0) 2021.08.10
백준 12015 ( Java )  (0) 2021.07.22
문제 2805 ( Java )  (0) 2021.07.21
백준 - 2110 ( Java ) - 매개변수 탐색  (0) 2021.07.20