[백준] 3151번 합이 0 cpp


[백준] 3151번 합이 0 cpp

최대 10000 C 3이기에 int형을 초과한다. 아무리 봐도 맞는 데 자꾸 틀렸다고 떠서 다시 보니 int cnt = 0; 으로 해서 틀리고 있었다. 문제를 보고 가장 먼저 떠오르는 풀이는 당연히 3중 for 문을 활용한 방법 하지만 N이 최대 10000이기에 당연히 안된다. 이분 탐색을 활용하면 N^2lonN으로 줄일 수 있다. 간단하게 설명하면 먼저 이중 for 문을 돌면서 두 개의 합을 구한다. 이때 a + b + c = 0이고 a + b = - c이기에 음수로 바꿔줘야 원하는 값을 구할 수 있다. upper_bound와 lower_bound를 사용한 이유는 예시를 들어서 설명하면 먼저 입력값을 받고 정렬한다. 위와 같이 입력 값을 정렬했을 때 첫 번째 2개의 0을 골랐다..........



원문링크 : [백준] 3151번 합이 0 cpp