백준

두 수의 합 #3273

곽가누 2024. 5. 2. 00:57

기억할 것

1. 두 포인터 유형의 문제

2. 이런 문제는 start와 end 변수를 만들어 index로 조작할 것 (객프시간에 비슷한거 했던거같은데..)

3. 목푯값이 더 크면 start 인덱스를 늘리고, 목푯값이 작으면 end 인덱스를 줄여야함.

 

내가 쓴 코드

#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;

int main() {
	int n, m;
	vector <int> v;
	cin >> n;
	for (int i = 0; i < n; i++) {
		int num;
		cin >> num;
		v.push_back(num);
	}
	cin >> m;

	sort(v.begin(), v.end());

	int cnt = 0;
	int start = 0;
	int end = n-1;
	while (true) {
		if (start >= end) {
			break;
		}
		else if (m == v[start] + v[end]) {
			cnt++;
			start++;
			end--;
		}
		else if (m < v[start] + v[end]) {
			end--;
		}
		else
			start++;
	}
	cout << cnt;
}

'백준' 카테고리의 다른 글

단어 공부 #1157  (0) 2024.08.16
합분해 #2225  (0) 2024.08.11
점프 점프 #11060  (1) 2024.01.02
AC #5430  (0) 2023.10.06
토마토 #7576  (0) 2023.10.06