백준 두 수의 합 java

Bong2·2024년 4월 24일
0

알고리즘

목록 보기
3/63

문제 출처 :
두 수의 합 백준

문제 접근
1. 해당 수열을 정렬하여 작은 수와 큰수를 더하면서 비교하기 위함
2. 왼쪽과 오른쪽으로 시작하는 값들을 더한 값을 위주로 구해야될 값이면 결과++하고 크면 오른쪽을 더 작은 값으로 옮겨주고 작으면 왼쪽을 더 큰 값으로 옮겨주며 더한 값을 확인

import java.util.*;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);

        //수열의 크기
        int n = sc.nextInt();
        int []arr = new int[n];
        //수열 정보
        for(int i =0; i < n;i++)
        {
            arr[i] = sc.nextInt();
        }
        //두 수의 합이 되어야할 값
        int k = sc.nextInt();

        //오름차순 정렬
        Arrays.sort(arr);

        int left = 0;
        int right = n-1;
        int ans = 0;

        while(left < right)
        {
            int sum = arr[left] + arr[right];

            if( sum == k)
            {
                ans++;
                left++;
                right--;
            }
            else if (sum > k)
            {
                right--;
            }else{
                left++;
            }

        }

        System.out.println(ans);
        sc.close();;
    }
}
profile
자바 백엔드 개발자로 성장하자

0개의 댓글