득이공간
[백준 C++] 1253 좋다 - 자료구조 본문
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
vector<int> Sequence;
int main()
{
ios::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
int N;
cin >> N;
Sequence.reserve(N);
for (int i = 0; i < N; ++i)
{
int Number;
cin >> Number;
Sequence.emplace_back(Number);
}
sort(Sequence.begin(), Sequence.end());
int Count = 0;
for (int i = 0; i < N; ++i)
{
int Left = 0;
int Right = N - 1;
while (Left < Right)
{
if (Left == i)
{
++Left;
continue;
}
if (Right == i)
{
--Right;
continue;
}
int Sum = Sequence[Left] + Sequence[Right];
if (Sum == Sequence[i])
{
++Count;
break;
}
if (Sum > Sequence[i])
{
--Right;
}
else
{
++Left;
}
}
}
cout << Count;
}
투 포인터 문제입니다.
같은 수가 여러개 입력될 수 있다는 점과
두 포인터 이동시 구하는 수를 건너뛴다는 점을 주의해서 풀었습니다.
'PS > 알고리즘 문제풀이' 카테고리의 다른 글
[백준 C++] 11659 구간 합 구하기 4 - 자료구조 (0) | 2024.02.03 |
---|---|
[백준 C++] 1966 프린터 큐 - 자료구조 (0) | 2024.02.03 |
[백준 C++] 1922 네트워크 연결 - 최소신장트리 (0) | 2024.02.03 |
[백준 C++] 1197 최소 스패닝 트리 - 최소신장트리 (0) | 2024.02.03 |
[백준 C++] 11403 경로 찾기 - 플로이드워셜 (0) | 2024.02.02 |