문제 링크 : https://www.acmicpc.net/problem/2473
백준 2470번 두 용액 문제의 업그레이드 버전입니다.
두 용액을 O(n) 시간에 구했었습니다.
세 용액은 배열의 숫자 하나를 지정해서 (두 용액 + 지정된 용액) 의 합이 0에 가장 가까운지 판단하면 됩니다.
따라서 배열을 순회하면서 두 용액 구하는 과정을 N번 반복하면 되기 때문에 O(N^2) 시간에 구할 수 있습니다.
한 가지 주의할 점은 두 용액 문제에서는 용액의 합으로 나올 수 있는 최대값이 2,000,000,000 이었기 때문에 int 형으로도 풀렸지만
세 용액 문제에서는 3,000,000,000 이상이 될 수 있기 때문에 long 타입으로 풀어줘야 합니다.
'알고리즘 문제 > 백준' 카테고리의 다른 글
백준 10815번. 숫자 카드 (Java) (0) | 2019.02.16 |
---|---|
백준 2240번. 자두나무 (Java) (0) | 2019.02.15 |
백준 2470번. 두 용액 (Java) (0) | 2019.02.11 |
백준 10835번. 카드게임 (Java) (0) | 2019.02.10 |
백준 2583번. 영역 구하기 (Java) (0) | 2019.02.10 |