728x90
반응형
https://www.acmicpc.net/problem/2470
1. Logic
음수와 양수가 섞여있기 때문에 먼저 오름차순으로 정렬을 한다.
두개의 포인터중 하나는 음수에서부터 하나은 양수에서 부터 서로 끝과 끝에서 가운데로 모이는 방식으로 투포인터를 적용한다.
2. Code
#include<bits/stdc++.h>
using namespace std;
const long long INF = 1e12;
vector<long long> ans(2);
vector<long long> vec;
int main() {
ios_base::sync_with_stdio(false); cout.tie(0); cin.tie(0);
long long n;
cin >> n;
for(long long i = 0; i < n; i++) {
long long a;
cin >> a;
vec.push_back(a);
}
sort(vec.begin(), vec.end());
long long start = 0;
long long end = n - 1;
long long tmep = INF; //가장 0에 가까운 합
while(start < end) {
long long sum = vec[start] + vec[end];
if (tmep > abs(sum) ) {
tmep = abs(sum);
ans[0] = vec[start];
ans[1] = vec[end];
if(sum == 0) break;
}
if (sum < 0)
start++;
else
end--;
}
cout << ans[0] << " " << ans[1];
}
3. Feedback
- 실행했을때 극한의 테스트 케이스를 넣으면 INF로 넣은 엄청 큰 수 보다 더 큰수가 들어올 수 있어서 if문에 걸리지 않아 틀렸다고 나왔다. 문제의 조건을 잘 읽고 해당 범위에 맞는 값을 초기화 해주는 것 또한 중요하다
알고리즘 Solve 후 제가 생각한 Logic을 기록하는 개인 공부 블로그입니다.
내용 중 최적화가 가능한 부분등은 언제든지 댓글로 틀린 부분 및 피드백 주시면 공부 및 반영하겠습니다🧐
728x90
반응형
'Algorithm > Beakjoon' 카테고리의 다른 글
[백준/Baekjoon] 2206 벽 부수고 이동하기 C++ :: BFS (0) | 2023.08.24 |
---|---|
[백준/Baekjoon] 7570 줄세우기 C++ :: Dynamic Programming (0) | 2023.08.23 |
[백준/Baekjoon] 2003 수들의 합 2 C++ :: two pointers (0) | 2023.08.21 |
[백준/Baekjoon] 1806 부분합 C++ :: two pointers (0) | 2023.08.21 |
[백준/Baekjoon] 2573 빙산 C++ :: BFS (0) | 2023.08.20 |