Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- 추상 클래스
- 인터페이스
- nextInt
- abstract
- 생성자
- python
- Final
- 제네릭
- 와일드카드
- this
- 프림알고리즘
- 캡슐화
- polymorphism
- 17472
- 열거형
- enum
- 다형성
- 백준
- java
- Encapsulation
- inheritance
- 상속
- Scanner
- 객체지향
- 객체 지향
- 최소신장트리
- 버퍼비우기
- 내부 클래스
- 추상화
Archives
- Today
- Total
쫑쫑이의 블로그
백준 2467 용액 Java [투포인터] 본문
https://www.acmicpc.net/problem/2467
입력값이 오름차순으로 정렬된 배열이므로,
왼쪽 끝과 오른쪽 끝값을 조건에 따라 하나씩 늘리거나 줄여가면서
0과 가장 가까운 값을 저장하고 출력한다
음수도 나올 수 있으니까 더했을 때 음수면 왼쪽값을 늘리고, 양수면 오른쪽 값을 줄인다
import java.awt.*;
import java.io.*;
import java.util.*;
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[] solutions = Arrays.stream(br.readLine().split(" ")).mapToInt(Integer::parseInt).toArray();
int min = Math.abs(solutions[0] + solutions[N - 1]);
Point point = new Point(solutions[0], solutions[N - 1]);
int l = 0, r = N - 1;
while (l < r) {
int now = solutions[l] + solutions[r];
if (min > Math.abs(now)) {
min = Math.abs(now);
point = new Point(solutions[l], solutions[r]);
}
if (now < 0) l++;
else if (now > 0) r--;
else break;
}
System.out.println(point.x + " " + point.y);
}
}
'알고리즘 > 백준' 카테고리의 다른 글
백준 17425 약수의 합 Java [에라토스테네스의 체, 누적합] (0) | 2022.11.19 |
---|---|
백준 7579 앱 Java [DP, 배낭문제] (0) | 2022.11.17 |
백준 9328 열쇠 Java [구현, BFS] (0) | 2022.11.15 |
백준 2252 줄 세우기 Java [위상정렬] (0) | 2022.11.14 |
백준 2239 스도쿠 Java [백트래킹, DFS] (0) | 2022.11.13 |