Search

1253 - 좋다 (좋은 수 구하기)

Problem

Solution

투 포인터 이동 원칙 의사코드
A[i] + A[j] > K: j--; A[i] + A[J] < K: i++; A[i] + A[j] == K: count++;
Markdown
복사
#include <iostream> #include <vector> #include <algorithm> using namespace std; int main() { ios::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); int N; cin >> N; vector<int> A(N, 0); for(int i = 0; i < N; i++) { cin >> A[i]; } sort(A.begin(), A.end()); int Result = 0; for (int k = 0; k < N; k++) { long find = A[k]; int i = 0, j = N - 1; while(i < j) { if(A[i] + A[j] == find) { if(i != k && j != k) { Result++; break; } else if(i == k) { i++; } else if(j == k) { j--; } } else if(A[i] + A[j] < find) { i++; } else { j--; } } } cout << Result << endl; }
C++
복사