새발블로그

[백준/Java] 2467 용액 본문

Problem Solving/Baekjoon

[백준/Java] 2467 용액

EUG 2025. 7. 1. 14:21

문제

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

풀이방법

0과의 절댓값으로 가장 가까운지 판단하면서 left, right 값 저장

풀이

import java.util.*;
import java.io.*;
import java.lang.*;

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());
        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 first = 0;
        int second = 0;
        int closeToZero = Integer.MAX_VALUE;

        while (left<right) {
            int sum = arr[left] + arr[right];
            if (sum == 0 ) {
                first = left;
                second = right;
                break;
            }
            if (Math.abs(closeToZero)>=Math.abs(sum)) {
                closeToZero = Math.abs(sum);
                first = left;
                second = right;
            }
            //양수일 때 합은 작아져야하고 음수일때 합은 커져야함
            if (sum>0) {
                right--;
            } else {
                left ++;
            }
        }
        System.out.println(arr[first]+" "+arr[second]);
    }
}

 

 

'Problem Solving > Baekjoon' 카테고리의 다른 글

[백준/Java] 10026 적록색약  (0) 2025.07.01
[백준/Java] 1260 DFS와 BFS  (0) 2025.07.01
[백준/Java] 나무 자르기  (0) 2025.07.01
[백준/Java] 10816 숫자 카드 2  (0) 2025.07.01
[백준/Java] 15649 N과 M(1)  (0) 2025.07.01