[백준/14921] 용액 합성하기 - JAVA

이지환·2025년 5월 16일

알고리즘(백준) 💻

목록 보기
68/80
post-thumbnail

📌 문제

알고리즘 분류 : 투 포인터
난이도 : 골드5
출처 : 백준 - 용액 합성하기

🦧 문제 풀이 접근

투포인터 방식으로 문제를 해결한다.
배열에 값을 저장하고 맨앞(p1)과 맨뒤(p2) 인덱스의 합을 구한다.
이때 해당 값의 절대값이 양수일 경우 p2를 -1한다.
해당 값의 절대값이 음수일 경우 p1을 +1한다.
p1,p2인덱스 값의 합이 가장 0에 가까울때의 값을 출력한다.

💻 code

import java.util.*;
import java.io.*;
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 zeroVal=200_000_001;
        int p1 = 0, p2 = N-1;
        while(p1<p2) {
            int gap = arr[p2]+arr[p1];
            if(Math.abs(zeroVal)>Math.abs(gap))
                zeroVal = gap;
            if(gap>0)
                p2--;
            else
                p1++;
        }
        System.out.println(zeroVal);
    }
}

🥇 결과

🎓 느낀점

골드5치고 많이 쉬운 문제다.

profile
takeitEasy

0개의 댓글