Algorithm/Baekjoon Online Judge

[Java] BOJ2467_용액

'지훈' 2021. 4. 20. 00:02

www.acmicpc.net/problem/2467

 

2467번: 용액

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

www.acmicpc.net


jihunworld.tistory.com/28

위의 용액 합성하기 문제와 거의 같은 문제이다.

가장 0과 가까운 수를 찾았을 때 왼쪽과 오른쪽 용액을 저장해 두고 출력하면 된다.

 

 

import java.io.*;
import java.util.StringTokenizer;

public class Main {

	public static void main(String[] args) throws NumberFormatException, IOException {
		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());
		}
		int left = 0;
		int right = N-1;
		int resL = 0, resR = 0;
		int min = Integer.MAX_VALUE;
		while(true) {
			if(left==right) break;
			int sum = arr[left] + arr[right];
			if(Math.abs(sum) <= min) {
				min = Math.abs(sum);
				resL = arr[left];
				resR = arr[right];
			}
			if(sum < 0) {
				left++;
			} else {
				right--;
			}
			
		}
		System.out.println(resL + " " + resR);
	}

}

 

 

[참고]

값이 오름차순으로 들어오지 않는 유형의 문제이다.

jihunworld.tistory.com/30

 

[Java] BOJ2470_두 용액

www.acmicpc.net/problem/2470 2470번: 두 용액 첫째 줄에는 전체 용액의 수 N이 입력된다. N은 2 이상 100,000 이하이다. 둘째 줄에는 용액의 특성값을 나타내는 N개의 정수가 빈칸을 사이에 두고 주어진다.

jihunworld.tistory.com