-
[백준]2470: 두 용액 - JAVA문제풀이/백준 2021. 2. 10. 18:45
[백준]2470: 두 용액
풀이
이분탐색 문제를 풀어보려고 풀었는데 풀고나니 이분탐색 문제보다는 투포인터? 라는 문제라고 한다.
배열을 정렬한 후 첫 인덱스와 마지막 인덱스 값을 증감하며 적절한 위치를 찾아주었다.
scanner를 써서 풀면 시간초과가 났다.
코드
123456789101112131415161718192021222324252627282930313233343536import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.util.*;public class Main {public static void main(String[] args) throws NumberFormatException, IOException {BufferedReader br = new BufferedReader(new InputStreamReader(System.in));int n = Integer.parseInt(br.readLine());int[] solution = new int[n];StringTokenizer st = new StringTokenizer(br.readLine());for (int i = 0; i < n; i++) {solution[i] = Integer.parseInt(st.nextToken());}Arrays.sort(solution);int s1 = 0, s2 = 0; //용액 정보를 저장int s = 0;int e = n - 1;int min = Integer.MAX_VALUE;while(s < e) {int total = solution[s] + solution[e];if(Math.abs(total) < min) {min = Math.abs(total);s1 = solution[s];s2 = solution[e];}if(total < 0) { //total이 마이너스 값이라는 것은 s의 절댓값이 더 크다는 것을 의미. 0에 근사하게 만들기 위해 s의 인덱스를 증가시킨다.s++;} else e--;}System.out.println(s1 + " " + s2);}}cs '문제풀이 > 백준' 카테고리의 다른 글
[백준]1759: 암호 만들기 - JAVA (0) 2021.02.11 [백준]10844: 쉬운 계단 수 - JAVA (0) 2021.02.11 [백준]14503: 로봇 청소기 - JAVA (1) 2021.02.10 [백준]1916: 최소비용 구하기 - JAVA (0) 2021.02.09 [백준]17406: 배열 돌리기4 - JAVA (0) 2021.02.09