[백준] 두 용액(자바)

9627 단어 백준백준

알고리즘 문제 풀이를 블로그에 올리는 이유는 풀이, 코드를 기록하기 위함이니
앞으로 문제를 다 긁어오기보다 링크만 두고 풀이가 잘 보이도록 포스팅 할 예정입니다!

📄 문제

[백준] 두 용액


👩‍💻 풀이

1. 문제 이해

이 문제는 주어진 수열 중 두 수를 더하여 가장 0에 가까운 조합을 만들어내고, 해당 조합의 숫자를 오름차순으로 출력하는 문제이다.


2. 풀이

이중 반복문을 쓰지 않고 투 포인터를 사용하면 간단하게 풀 수 있다.

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

public class Main {

    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[] arr = new int[N];
        st = new StringTokenizer(br.readLine(), " ");
        for(int i = 0; i < N; i++) {
            arr[i] = Integer.parseInt(st.nextToken());
        }

        //twoPointer
        int p1 = 0;
        int p2 = N-1;
        int fit = Integer.MAX_VALUE;
        String answer = “ “;

        Arrays.sort(arr);

        while(p1 < p2) {
            int sum = arr[p1] + arr[p2];

            if(Math.abs(sum) < fit) {
                fit = Math.abs(sum);
                answer = arr[p1] + " " + arr[p2];
            }if(sum > 0) {
                p2--;
            }else {
                p1++;
            }
        }

        System.out.println(answer);
    }
}

좋은 웹페이지 즐겨찾기