728x90
반응형
https://www.acmicpc.net/problem/2467
1. Logic
- 전형적인 투포인터 문제이다.
양쪽 끝에서 중간까지 오는 포인터 두개를 선언한 뒤 각 포인터에 해당하는 컨테이너 값을 더한 값이 이전의 sum값보다 작으면 값을 갱신해준다.
현재 포인터에 해당하는 sum값이 0보다 크면 값을 줄여줘야하기 때문에 right 포인터를 하나 줄여주고 이외에는 값을 키워야하기 때문에 left 포인터를 하나 올려준다.
2. Code
#include <bits/stdc++.h>
using namespace std;
vector<int> sol;
int n;
void twoPointer() {
int left = 0;
int right = n - 1;
int sum = INT_MAX;
int a, b;
while(left < right) {
int temp = sol[left] + sol[right];
if(abs(temp) < abs(sum)) {
sum = temp;
a = sol[left];
b = sol[right];
}
if(temp == 0) break;
else if(temp > 0) right--;
else left++;
}
cout << a << " " << b;
}
int main() {
ios_base::sync_with_stdio(false); cin.tie(0); cout.tie(0);
cin >> n;
for(int i = 0; i < n; i++) {
int a;
cin >> a;
sol.push_back(a);
}
twoPointer();
}
3. Feedback
전형적인 투포인터 문제였다.
알고리즘 Solve 후 제가 생각한 Logic을 기록하는 개인 공부 블로그입니다.
내용 중 최적화가 가능한 부분등은 언제든지 댓글로 틀린 부분 및 피드백 주시면 공부 및 반영하겠습니다🧐
728x90
반응형
'Algorithm > Beakjoon' 카테고리의 다른 글
[백준/Baekjoon] 1766 문제집 C++ :: Topological sort (0) | 2023.09.20 |
---|---|
[백준/Baekjoon] 2252 줄 세우기 C++ :: topological Sort (0) | 2023.09.20 |
[백준/Baekjoon] 2638 치즈 C++ :: BFS & Graph & Implementation (1) | 2023.09.18 |
[백준/Baekjoon] 15683 감시 C++ :: Brute force & Implementation & Back tracking (2) | 2023.09.18 |
[백준/Baekjoon] 15686 치킨배달C++ :: Back tracking (0) | 2023.09.17 |