3273번. 두수의 합 질문 재작성입니다.
278
0
http://boj.kr/9d09e66af5384b6cb43bc8de088d5be8
큰돌님 안녕하세요.
링크랑 같이 올렸어야 했는데, 죄송합니다.
답변 1
1
음 해당 로직은 안될 것같아요. 정리하자면 다음과 같은 코드인거잖아요? (--end 이런식으로 하면 틀려서 해당 부분은 수정했습니다.)
#include<bits/stdc++.h>
using namespace std;
int n, ret, x;
int main(){
cin >> n;
vector<int> a(n);
for(int i = 0; i < n; i++) cin >> a[i];
cin >> x;
sort(a.begin(), a.end());
int l = 0, r = 1;
while(l < r){
if(a[l] + a[r] == x)l++, ret++;
else if(a[l] + a[r] > x)l++;
else if(a[l] + a[r] < x)r++;
}
cout << ret << "\n";
}
근데 이건.. 아래 그림처럼 우리가 원하는 것은 빨간색처럼 찾아가는 건데 갑자기 r++가 되면서 우리가 원하는 방향으로 탐색이 안됩니다.





