알고리즘문제풀이/백준

[BOJ]2467_용액_Java

초보개발자.. 2021. 7. 10. 18:32

--문제--

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

 

2467번: 용액

첫째 줄에는 전체 용액의 수 N이 입력된다. N은 2 이상 100,000 이하의 정수이다. 둘째 줄에는 용액의 특성값을 나타내는 N개의 정수가 빈칸을 사이에 두고 오름차순으로 입력되며, 이 수들은 모두 -

www.acmicpc.net

--문제접근--
용액의수N이 입력되고 N개의 정수가 빈칸을 사이에두고 오름차순으로 입력되어지니
생각이난 것은 시작점을 지정하고 그수와 비교되는 수를끝에서부터 차근차근 내려오는식으로 접근하면 어떨가? 에서 시작 되었습니다.

package Class5;

import java.util.Arrays;
import java.util.Scanner;

public class BOJ_2467_용액 {
	//문제접근
	//용액의수N이 입력되고 N개의 정수가 빈칸을 사이에두고 오름차순으로 입력되어지니
	//생각이난 것은 시작점을 지정하고 그수와 비교되는 수를끝에서부터 차근차근 내려오는식으로 접근하면 어떨가? 에서 시작 되었습니다.
	//이러한 과정을 진행하면서 temp가 ans보다 작다면 갱신하는 식으로 진행합니다 
	public static void main(String[] args) {
		Scanner sc=new Scanner(System.in);
		int N=sc.nextInt();
		long[] arr=new long[N];
		for(int i=0;i<N;i++) {
			arr[i]=sc.nextLong();
		}
		long ans=Integer.MAX_VALUE;
		int start=0;
		int end=N-1;
		long[] ans1=new long[2];
		while(start<end) {
			long sum=arr[start]+arr[end];
			if(ans>Math.abs(sum)) {
				ans=Math.abs(sum);
				ans1[0]=arr[start];
				ans1[1]=arr[end];
			}
			if(sum<0)start++;
			else end--;
		}
		System.out.println(ans1[0]+" "+ans1[1]);
		
	}

}