본문 바로가기

Language/JAVA

[JAVA][백준 2473][투 포인터] 세 용액 - 컴도리돌이

728x90
 

2473번: 세 용액

첫째 줄에는 전체 용액의 수 N이 입력된다. N은 3 이상 5,000 이하의 정수이다. 둘째 줄에는 용액의 특성값을 나타내는 N개의 정수가 빈칸을 사이에 두고 주어진다. 이 수들은 모두 -1,000,000,000 이상

www.acmicpc.net


세 용액의 합이 0과 가장 근사한 값을 찾아야 한다.

용액의 수가 5000 이하이기 때문에

최악일 경우 5000 * 2500 = 7500000의 연산을 계산하기 때문에 

시간 복잡도에 대한 걱정 없이 해결할 수 있었다.

 

기준점 i번째의 값부터 n-1의 값까지 j번째와 k번째의 합들 중에서 최솟값을 구했다.

여기서 j번째는 i+1, k번째는 n-1번째로 설정하여

투 포인터 알고리즘으로 해결하였다.

i, j, k번째의 합이 비교대상 comp과 비교하여 최솟값과 인덱스 값을 업데이트해주었다.