백준 2470 두 용액 JAVA

sundays·2023년 4월 19일
0

문제

두 용액

풀이

구해야 할 두 값의 합이 0에 가까운 두 원소를 구하는 것이다. 10만개 정도면 Scanner써도 될것 같았는데 근데 희안하게 이문제만 BufferedReader로 푼사람이 없고 Scanner로 쓴 분들이 많아서 더 의심을 안했음 진짜 왜맞틀.... 이었으나 정말 이부분이 문제였다..

아무튼 이 문제는 투포인터로 풀어야하는데 생각보다 좀 귀찮은 문제였다. 원소를 처음부터 끝까지 비교를 해야하는데 일단 정렬을 미리해두어야 나중에 출력할때 번거롭지 않다.
원소 인덱스를 기준으로 잡아서 투포인터를 해야한다

Arrays.sort(arr);
// 가장 작은 값의 인덱스 0
// 가장 큰 값의 인덱스 n - 1
int min = 0, max = n - 1, hap = Integer.MAX_VALUE;
while (min < max) {
	// 현재 혼합 용액의 특성값 
	int mid = Math.abs(arr[min] + arr[max]);
    // 혼합 용액 특성 값이 더 작으면
    if (hap > mid) {
    	hap = mid;
        answer[0] = arr[min];
        answer[1] = arr[max];
        // 0이 되면 가장 최소값이라 탈출
        if (mid == 0) {
        	break;
        }
    }
    // 더했을때 0보다 작으면 더 큰 값을 대입해야 하므로 min + 1을 한다
    if (arr[min] + arr[max] < 0) {
    	min += 1;
    } else {
    	max -= 1;
    }
}

전체 코드

전체 코드

profile
develop life

0개의 댓글

관련 채용 정보