2470번: 두 용액
첫째 줄에는 전체 용액의 수 N이 입력된다. N은 2 이상 100,000 이하이다. 둘째 줄에는 용액의 특성값을 나타내는 N개의 정수가 빈칸을 사이에 두고 주어진다. 이 수들은 모두 -1,000,000,000 이상 1,000,00
www.acmicpc.net
풀이
정렬을 한 후, 투 포인터를 사용해서 해결했습니다.
이때, 문제에서 0에 제일 가까운 값을 찾기위해 절대값을 사용해서 최소값과 비교를 통해 정답을 갱신시켰습니다.
코드
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 int N;
public static int[] answer = new int[2];
public static int[] liquid;
public static void main(String[] args) throws NumberFormatException, IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = null;
N = Integer.parseInt(br.readLine());
liquid = new int[N];
st = new StringTokenizer(br.readLine(), " ");
for (int i = 0; i < N; ++i) {
liquid[i] = Integer.parseInt(st.nextToken());
}
Arrays.sort(liquid);
int l = 0, r = liquid.length - 1;
int min = Integer.MAX_VALUE;
while (l < r) {
int sum = liquid[l] + liquid[r];
if (Math.abs(sum) < Math.abs(min)) {
min = sum;
answer[0] = liquid[l];
answer[1] = liquid[r];
}
if (sum < 0) {
l++;
}
else if (sum > 0) {
r--;
}
else {
answer[0] = liquid[l];
answer[1] = liquid[r];
break;
}
}
System.out.println(answer[0] + " " + answer[1]);
}
}
pyo7410/Algorithm
1일 1커밋을 목표로! Contribute to pyo7410/Algorithm development by creating an account on GitHub.
github.com
'알고리즘 > 백준' 카테고리의 다른 글
[Java] BOJ 1038번 감소하는 수 (0) | 2021.07.07 |
---|---|
[Java] BOJ 14226번 이모티콘 (0) | 2021.07.06 |
[Java] BOJ 12851번 숨바꼭질 2 (0) | 2021.07.02 |
[Java] BOJ 11559번 Puyo Puyo (0) | 2021.07.01 |
[Java] BOJ 2636번 치즈 (0) | 2021.06.30 |