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 에서 시작했습니다.
'코딩테스트' 카테고리의 다른 글
[백준] 1600번 '말이 되고픈 원숭이' - Java (1) | 2023.08.03 |
---|---|
[백준] 3020번 '개똥벌레' - Java (1) | 2023.08.02 |
[백준] 1263번 '시간 관리' - Java (1) | 2023.07.31 |
[백준] 5582번 '공통 부분 문자열' - Java (1) | 2023.07.29 |
[백준] 1937번 '욕심쟁이 판다' - Java (1) | 2023.07.28 |