-
백준 2467 용액, 2470 두 용액 - C++쾌락없는 책임 (공부)/알고리즘 문제풀이 2021. 6. 17. 21:17반응형
2467번: 용액
첫째 줄에는 전체 용액의 수 N이 입력된다. N은 2 이상 100,000 이하의 정수이다. 둘째 줄에는 용액의 특성값을 나타내는 N개의 정수가 빈칸을 사이에 두고 오름차순으로 입력되며, 이 수들은 모두 -
www.acmicpc.net
2470번: 두 용액
첫째 줄에는 전체 용액의 수 N이 입력된다. N은 2 이상 100,000 이하이다. 둘째 줄에는 용액의 특성값을 나타내는 N개의 정수가 빈칸을 사이에 두고 주어진다. 이 수들은 모두 -1,000,000,000 이상 1,000,00
www.acmicpc.net
#include <iostream> #include <vector> #include <algorithm> using namespace std; int n, resL, resR; int main(){ scanf("%d", &n); vector<int> v(n); for(int i = 0; i < n; i++) scanf("%d", &v[i]); sort(v.begin(), v.end()); int left = 0; int right = n-1; int res = 2000000000; while(left < right){ int x = v[left]; int y = v[right]; if(abs(x + y) < res){ res = abs(x + y); resL = x; resR = y; } if(x + y < 0) left++; else right--; } printf("%d %d\n", resL, resR); }
놀랍게도 두 문제에서 원하는 내용이 비슷해 같은 코드로 가능했습니다. 차이가 제일 적은걸 구해야 하기 때문에 abs를 이용해서 가장 작은 값을 구하게 되고 만약 두개 더한 값이 음수라면 왼쪽에 있는 수가 음수라는 뜻이니 오른쪽으로 한한 옮긴 뒤 비교를 하고 양수인 경우 반대로 오른쪽 값을 왼쪽으로 옮겨 진행하면 됩니다.
반응형'쾌락없는 책임 (공부) > 알고리즘 문제풀이' 카테고리의 다른 글
백준 2206 벽 부수고 이동하기 - C++, BFS (0) 2021.06.23 백준 1865 웜홀 - C++, 벨만-포드 알고리즘 (0) 2021.06.18 백준 17404 RGB 거리 2 - DP (0) 2021.06.17 백준 11657 타임머신 - C++, 벨만포드 알고리즘 (0) 2021.06.15 백준 7579 앱 - C++, 배낭 문제 (0) 2021.06.15