dev.Log
1253 투포인터 본문
package acmicpc;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.StringTokenizer;
public class P1253 {
public static void main(String[] args) throws IOException {
BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
int N = Integer.parseInt(bf.readLine());
int Result = 0;
long A[] = new long[N];
StringTokenizer st = new StringTokenizer(bf.readLine());
for(int i=0; i<N; i++) {
A[i] = Long.parseLong(st.nextToken());
}
Arrays.sort(A);
for(int k=0; k<N; k++) {
long find = A[k];
int i = 0;
int j = N -1;
//투포인터 알고리즘
while(i < j) {
if(A[i] + A[j] == find) {
//find는 서로 다른 두 수의 합이어야 함을 체크
if( i != k && j != k) {
Result++;
break;
} else if ( i==k ) {
i++;
} else if ( j==k ) {
j--;
}
} else if (A[i] + A[j] < find) {
i++;
} else {
j--;
}
}
}
System.out.println(Result);
bf.close();
}
}
'알고리즘' 카테고리의 다른 글
스택 P1874 (0) | 2022.09.12 |
---|---|
Deque<Node> deque = new LinkedList<>(); (0) | 2022.09.12 |
2018 연속합 (0) | 2022.09.05 |
10986 나머지합구하기 (0) | 2022.09.04 |
11659 구간합 (1) | 2022.09.02 |
Comments