본문 바로가기

알고리즘/BAEKJOON

3273 두 수의 합_Two Pointers

3273번: 두 수의 합 (acmicpc.net)

 

3273번: 두 수의 합

n개의 서로 다른 양의 정수 a1, a2, ..., an으로 이루어진 수열이 있다. ai의 값은 1보다 크거나 같고, 1000000보다 작거나 같은 자연수이다. 자연수 x가 주어졌을 때, ai + aj = x (1 ≤ i < j ≤ n)을 만족하는

www.acmicpc.net

package Two_Pointers;

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.StringTokenizer;

public class Baekjoon_3273_두수의합 {

	public static void main(String[] args) throws Exception{
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		int n = Integer.parseInt(br.readLine());
		int[] 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 x = Integer.parseInt(br.readLine());

		int start = 0, end = n-1;
		int cnt = 0;
		
		while(true) {
			if(start >= end) break;
			
			if(arr[start]+arr[end] > x) {
				end--;
			}
			else if(arr[start]+arr[end] < x) start++;
			else{
				cnt++;
				start++;
				end--;
			}
		}
		System.out.println(cnt);
	}
}

'알고리즘 > BAEKJOON' 카테고리의 다른 글

15565 귀여운 라이언_Two Pointers  (0) 2021.06.28
2531 회전초밥_Sliding Window  (0) 2021.06.28
2018 수들의 합5_Two Pointers  (0) 2021.06.25
2617 구슬 찾기_Floyd Warshall  (0) 2021.06.24
2660 회장뽑기_Floyd Warshall  (0) 2021.06.22