기억할 것
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 |