https://www.acmicpc.net/problem/1253
아이디어:
1. vector, 정렬, 투 포인터 사용
2. 정수 범위이므로 음수 고려 > 끝 인덱스가 N - 1에서 시작
3. 자기자신을 더할 때는 제외한다.
// 1253
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main() {
ios::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
long N, answer = 0;
cin >> N;
vector<long> A(N, 0);
long start = 0;
long end = 0;
for (int i = 0; i < N; i++) {
cin >> A[i];
}
sort(A.begin(), A.end());
for (int i = 0; i < N; i++) {
start = 0;
end = N - 1;
while (start < end) {
if (A[start] + A[end] == A[i]) {
if (start != i && end != i) {
answer++;
break;
}
else if (start == i)
start++;
else if (end == i)
end--;
}
else if (A[start] + A[end] < A[i]) {
start++;
}
else if (A[start] + A[end] > A[i]) {
end--;
}
}
}
cout << answer;
return 0;
}
'algorithm' 카테고리의 다른 글
백준 11003번 최솟값 찾기 (0) | 2024.12.15 |
---|---|
백준 12891번 DNA 비밀번호 (0) | 2024.12.15 |
백준 1940번 주몽 (0) | 2024.12.01 |
백준 2018번 수들의 합 5 (0) | 2024.11.24 |
백준 10986번 나머지 합 (0) | 2024.11.24 |