코딩테스트/백준
[백준] 좋다 (C++)
Deff_a
2024. 9. 5. 14:34
문제

https://www.acmicpc.net/problem/1253
풀이
이 문제는 이분 탐색 문제로, 입력된 숫자들을 오름차순으로 정렬한 후, 좋은 숫자의 갯수를 구하는 방법으로 풀이했다.
#include<iostream>
#include<vector>
#include<algorithm>
// https://www.acmicpc.net/problem/1253
using namespace std;
int main() {
int n;
cin >> n;
vector<int> vec(n);
for (int i = 0; i < n; i++) {
cin >> vec[i];
}
sort(vec.begin(), vec.end() );
int count = 0;
for (int i = n - 1; i >= 0; i--) {
int left = 0, right = n - 1, target = vec[i];
while (left < right) {
if (i == right) {
right--;
}
else if (i == left)
{
left++;
}
else {
int num = vec[left] + vec[right];
if (num == target) {
count++;
break;
}
else if (num > target) {
right--;
}
else {
left++;
}
}
}
}
cout << count;
return 0;
}