728x90
https://www.acmicpc.net/problem/3273
이중 포문으로 하면 되지~ 생각했다가 역시나 시간초과 였다,, ㅎㅎㅎ
투 포인터를 사용해서 해결할 수 있는 문제였다.
1. 정렬
2. 양 끝의 번호를 더해서 해당 값이 이루어지는 지 확인하고
더 작다면 앞번호+1 , 더 크다면 뒷번호-1을 하여 반복한다.
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.StringTokenizer;
public class test3273 {
static int n;
static int[] arr;
public static void main(String[] args) throws NumberFormatException, IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
n = Integer.parseInt(br.readLine());
arr = new int[n];
StringTokenizer st = new StringTokenizer(br.readLine());
for (int i = 0; i < n; i++) {
arr[i] = Integer.parseInt(st.nextToken());
}
Arrays.sort(arr);
int number = Integer.parseInt(br.readLine());
int result = 0;
int start =0;
int end=n-1;
while(start<end) {
if(arr[start]+arr[end]==number) {
result++;
end--;
}else if(arr[start]+arr[end]<number) {
start++;
}else {
end--;
}
}
System.out.println(result);
}
}
'Java' 카테고리의 다른 글
[백준 1527] 금민수의 개수 (JAVA) (0) | 2023.05.12 |
---|---|
[백준 1644] 소수의 연속합 (JAVA) (0) | 2023.05.07 |
[백준 1300] K번째 수 (JAVA) (0) | 2023.05.05 |
[백준 1238] 파티 (JAVA) (0) | 2023.05.04 |
[백준 2580] 스도쿠 (JAVA) (0) | 2023.05.03 |