[백준] 1253 좋다 - Java
지난번에 풀었던 두 용액의 투 포인터 풀이와 유사한 방식으로 풀 수 있다.
배열을 정렬한 후 최소값과 최대값의 결과에 따라 포인터를 이동시키며 풀 수 있는데, 여기서 찾으려고 하는 요소는 포함되면 안된다.
이 부분만 따로 처리해 주면 쉽게 풀 수 있다.
import java.util.*;
import java.io.*;
public class Main{
static int[] arr;
static int N;
public static void main(String[] args) throws IOException{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
N = Integer.parseInt(br.readLine());
arr = new int[N+1];
StringTokenizer st = new StringTokenizer(br.readLine());
for(int i=1; i<N+1; i++){
arr[i] = Integer.parseInt(st.nextToken());
}
Arrays.sort(arr, 1, N+1);
long ans = 0;
for(int i = 1; i<N+1; i++){
if(sum_check(i)){
ans++;
}
}
System.out.println(ans);
}
static boolean sum_check(int target_idx){
int L = 1;
int R = N;
while(L < R){
if(L == target_idx){
L++;
continue;
}
if(R == target_idx){
R--;
continue;
}
if(arr[L] + arr[R] == arr[target_idx]){
return true;
}
if(arr[L] + arr[R] > arr[target_idx]){
R--;
}
if(arr[L] + arr[R] < arr[target_idx]){
L++;
}
}
return false;
}
}
'Algorithm > Baekjoon' 카테고리의 다른 글
[백준] 2003 수들의 합2- Java (0) | 2022.05.08 |
---|---|
[백준] 16472 고냥이 - Java (0) | 2022.05.08 |
[백준] 13144 List of Unique Numbers - Java (0) | 2022.05.08 |
[백준] 1431 시리얼 번호 - Java (0) | 2022.05.06 |
[백준] 2866 문자열 잘라내기 - Java (0) | 2022.05.06 |
댓글
이 글 공유하기
다른 글
-
[백준] 2003 수들의 합2- Java
[백준] 2003 수들의 합2- Java
2022.05.08 -
[백준] 16472 고냥이 - Java
[백준] 16472 고냥이 - Java
2022.05.08 -
[백준] 13144 List of Unique Numbers - Java
[백준] 13144 List of Unique Numbers - Java
2022.05.08 -
[백준] 1431 시리얼 번호 - Java
[백준] 1431 시리얼 번호 - Java
2022.05.06