코딩테스트
[백준] 1253번 '좋다' - Java
CuckooBird
2023. 8. 1. 13:29
https://www.acmicpc.net/problem/1253
1253번: 좋다
첫째 줄에는 수의 개수 N(1 ≤ N ≤ 2,000), 두 번째 줄에는 i번째 수를 나타내는 Ai가 N개 주어진다. (|Ai| ≤ 1,000,000,000, Ai는 정수)
www.acmicpc.net
문제
코드
import java.io.*;
import java.util.*;
public class Main {
private static final BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
private static final BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
public static void main(String[] args) throws IOException {
int n = Integer.parseInt(bf.readLine());
StringTokenizer st = new StringTokenizer(bf.readLine());
int[] arr = new int[n];
for(int i = 0 ; i < n ; i++) {
arr[i] = Integer.parseInt(st.nextToken());
}
Arrays.sort(arr);
int cnt = 0;
for(int i = 0 ; i < n ; i++) {
int a = 0 , b = n - 1;
while(a < b) {
if(arr[i] == arr[a] + arr[b]) {
if(i == a) a++;
else if(i == b) b--;
else {
cnt ++;
break;
}
}
else if(arr[i] < arr[a] + arr[b]) b--;
else a++;
}
}
bw.write(cnt + "\n");
bf.close();
bw.flush();
bw.close();
}
}
투포인터를 이용하여 타겟이 되는 숫자를 찾는 문제였습니다.
음수가 타겟이 될 수도 있고, 투포인터 중 하나가 될 수도 있기에 a = 0 , b = n-1 에서 시작했습니다.