728x90
문제 풀이
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.StringTokenizer;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int n = Integer.parseInt(br.readLine());
int a[] = new int[n];
StringTokenizer st = new StringTokenizer(br.readLine());
for (int i = 0; i < n; i++)
a[i] = Integer.parseInt(st.nextToken());
int x = Integer.parseInt(br.readLine());
br.close();
Arrays.sort(a);
int left = 0, right = n - 1, cnt = 0;
while (left < right) {
int sum = a[left] + a[right];
if (sum <= x) {
if (sum == x) cnt++;
left++;
} else
right--;
}
System.out.println(cnt);
}
}
* 투 포인터
- 입력받은 a 배열을 오름차순으로 정렬
- 왼쪽, 오른쪽 두 포인터를 움직여가며 x보다 크거나 같으면 오른쪽 포인터( right )의 위치를 왼쪽으로 옮겨가고,
그렇지 않으면 왼쪽 포인터( left )의 위치를 오른쪽으로 옮겨가며 a[left]와 a[right]의 합이 x를 만족하는 쌍의 개수를 카운트 한다
반응형
'코딩 문제 풀기 ( Algorithm problem solving ) > 백준 온라인 저지 ( BOJ )' 카테고리의 다른 글
[백준(Baekjoon)][자바(java)] 1450 : 냅색문제 / 투 포인터 (0) | 2021.01.29 |
---|---|
[백준(Baekjoon)][자바(java)] 2470 : 두 용액 / 투 포인터 (0) | 2021.01.29 |
[백준(Baekjoon)][자바(java)] 17472 : 다리 만들기 2 / 최소 신장 트리 (0) | 2021.01.29 |
[백준(Baekjoon)][자바(java)] 20040 : 사이클 게임 / 유니온 파인드 (0) | 2021.01.29 |
[백준(Baekjoon)][자바(java)] 4803 : 트리 / 트리 (0) | 2021.01.29 |