JAVA/Coding Test

[JAVA] 백준 1253 좋다_투포인터

오늘도개발 2024. 6. 9. 15:38

 

https://www.acmicpc.net/problem/1253

 

접근 : 

 

 - 입력된 수를 오름차순으로 정렬한다.

 

 - 왼쪽끝, 오른쪽 끝에 포인터를 두고 이동시키면서  target 인 수가 되는지 확인한다. 

 

 - 포인터가 target 인 수이면, 다음으로 이동시키면서 끝까지 진행한다.

 

 

 

코드구현 

 

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

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());

        String[] inputs = br.readLine().split(" ");
        int[] nums = new int[n];
        for(int i= 0 ; i < n ; i++) nums[i] = Integer.parseInt(inputs[i]);

        Arrays.sort(nums);
        int left ;
        int right ;
        int ans = 0;
        int temp_sum = 0;

        for(int j = 0 ; j < n ; j++){

            right = n - 1;
            left = 0;

            while (left < right) {
                if(left == j) {
                    left++;
                    continue;
                }

                if(right == j){
                    right--;
                    continue;
                }

                temp_sum = nums[right] + nums[left];

                if(temp_sum == nums[j]){
                    ans++;
                    break;
                }

                if(temp_sum < nums[j]){
                    left++;
                    continue;
                }

                right--;
            }
        }
        System.out.println(ans);
        br.close();
    }
}