문제: https://www.acmicpc.net/problem/2473
세 용액의 합이 0에 가까운 값을 구하는 문제입니다.
N^3으로 해결하면 시간초과가 나므로 이중 포문 + 이분 탐색을 활용해서 N^2(logN)으로 시간복잡도를 줄일 수 있습니다.
이분 탐색 조건은
현재 mid 인덱스를 사용해서 구한 세 용액의 합이 양수라면 mid 인덱스를 하한값(end)을 내림으로써 0에 가깝게 가도록 합니다.
현재 mid 인덱스를 사용해서 구한 세 용액의 합이 음수라면 mid 인덱스를 상한값(start)을 올림으로써 0에 가깝게 가도록 합니다.
추가로 주의할 점은 정수 3개를 더한 값이 정수 범위를 넘어갈 수 있으므로 long값으로 파싱해서 사용해야 합니다.
코드: https://github.com/cotchan/algorithm/blob/main/BOJ/BOJ2473.java
'Algorithm > BOJ' 카테고리의 다른 글
[BOJ]1197번: 최소 스패닝 트리 (0) | 2022.04.29 |
---|---|
[BOJ]1167번: 트리의 지름 (0) | 2022.04.28 |
[BOJ]2467번: 용액 (0) | 2022.04.28 |
[BOJ]2252번: 줄 세우기 (0) | 2022.04.27 |
[BOJ]2342번: Dance Dance Revolution (0) | 2022.04.27 |