-
[BOJ] 2473번 - 세 용액Algorithm/BOJ 2022. 6. 11. 14:27
[BOJ] 2473번 - 세 용액
https://www.acmicpc.net/problem/2473
알고리즘
각 용액의 3가지의 합이 최소가 되는 경우의 수를 찾아야한다.
이분탐색을 이용하여 하나를 선택한 다음에 나머지 두가지를 매칭하는 방법을 사용하였다.
1. 데이터를 입력 받는다.
2. 이분 탐색을 위하여 데이터를 정렬한다.
3. 각 용액 별로 최소의 경우(left , right 를 두어 결과 값이 0보다 크면 right를 작게 반대는 left를 크게)를 이분 탐색으로 찾아 해당되면 갱신
4. 모든 경우의 수 중 가장 작은 결과를 출력
코드
#BOJ 2473번 import sys input = sys.stdin.readline n = int(input()) datas = list(map(int,input().split())) datas.sort() answer = [] current = 3000000001 for i in range(n) : temp = datas[:i]+datas[i+1:] start , end = 0 , n-2 while start < end : target = datas[i]+temp[start]+temp[end] if current > abs(target) : answer = [datas[i],temp[start],temp[end]] current = abs(target) if target > 0 : end -= 1 else : start += 1 answer.sort() print(*answer)
'Algorithm > BOJ' 카테고리의 다른 글
[BOJ] 2482번 - 색상환 (0) 2022.06.13 [BOJ] 1700번 - 멀티탭 스케줄링 (0) 2022.06.13 [BOJ] 11660번 - 구간 합 구하기 5 (0) 2022.06.11 [BOJ] 2170번 - 선 긋기 (0) 2022.06.11 [BOJ] 2143번 - 두 배열의 합 (0) 2022.06.10