[코딩테스트][백준] 🔥 백준 14921번 "용액 합성하기" 문제: Java로 완벽 해결하기! 🔥

김상욱·2024년 11월 18일
post-thumbnail

문제 링크

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

🕒 Java 풀이시간: 15분

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 answer = Integer.MAX_VALUE;

        for (int i = 0; i < n - 1; i++) {
            answer = binarySearch(arr, i, i + 1, n - 1, answer);
            if (answer == 0) {
                break;
            }
        }

        System.out.println(answer);
    }

    private static int binarySearch(int[] arr, int targetIdx, int start, int end, int answer) {
        while (start <= end) {
            int mid = (start + end) / 2;
            int sum = arr[mid] + arr[targetIdx];

            if (sum == 0) {
                return 0;
            } else if (sum < 0) {
                start = mid + 1;
            } else {
                end = mid - 1;
            }

            if (Math.abs(sum) < Math.abs(answer)) {
                answer = sum;
            }
        }
        return answer;
    }
}

이진 탐색 기본 문제

이렇게 Java로 백준의 "용액 합성하기" 문제를 해결해보았습니다. 코드와 개념 설명을 참고하여 문제를 해결하는 데 도움이 되셨길 바랍니다! 😊

0개의 댓글