inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트

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++가 되면서 우리가 원하는 방향으로 탐색이 안됩니다.

image

0

김원태

시간 내주셔서 감사합니다.!