Algorithm/BOJ

BOJ_2467_용액_java

owoowo 2023. 1. 12. 16:01
728x90

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

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

/**
 백준 2467번 용액
 골드 5
*/
public class BOJ_2467_용액 {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringTokenizer st;

        int N = Integer.parseInt(br.readLine());
        int[] spec = new int[N];
        st = new StringTokenizer(br.readLine());
        for (int i = 0; i<N; i++){
            spec[i] = Integer.parseInt(st.nextToken());
        }
        solution(spec);
    }

    public static void solution(int[] spec){
        int left = 0;
        int right = spec.length -1;
        int n1 = 0, n2 = 0;
        int min = Integer.MAX_VALUE;

        while (left < right){
            if(spec[left] + spec[right] == 0){ // 0이면 종료
                n1 = spec[left];
                n2 = spec[right];
                break;
            }
            if(Math.abs(spec[left] + spec[right]) <= min){ // 갱신
                n1 = spec[left];
                n2 = spec[right];
                min = Math.abs(spec[left] + spec[right]);
            }
            if(spec[left] + spec[right] > 0){ // 양수인경우
                right = right -1; // 양수를 작게
            }else{ // 음수인 경우
                left = left + 1; // 음수를 작게
            }
        }
        System.out.println(n1 + " " + n2);
    }
}