You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
reacted with thumbs up emoji reacted with thumbs down emoji reacted with laugh emoji reacted with hooray emoji reacted with confused emoji reacted with heart emoji reacted with rocket emoji reacted with eyes emoji
-
문제 링크
https://www.acmicpc.net/problem/2470
문제 조건
-1,000,000,000 부터 1,000,000,000까지의 특성을 가진 N개의 용액이 주어졌을 때 두 용액을 더해 0에 가장 가까운 혼합 용액을 만드는 경우를 구하시오
아이디어
두 용액을 완전탐색으로 뽑아서 더해보기에는 N의 범위가 너무 커서 시간 안에 풀 수 없다.
용액을 하나 골랐다고 가정하자. 고른 용액이 A[i]라면 A[i]와 더해서 0에 가장 가까우려면 -A[i]와 가장 가까워야 한다.
정렬의 특성 중 “각 원소마다 가장 가까운 원소는 자신의 양 옆 중에 있다.”가 있었다. 정렬을 이용해 -A[i]와 가장 가까운 용액을 찾아보자
for문으로 용액을 하나씩 고른 후 나머지 용액을 고를 것이다.
어짜피 for 문으로 모든 용액을 비교할 것이므로 탐색범위는 기준 용액의 오른쪽 용액들인 A[i + 1] ~ A[N] 만 탐색해줘도 빠지는 케이스 없이 비교 가능하다.
용액 리스트를 정렬 - O(N logN)
모든 원소마다 이분 탐색으로 가장 가까운 원소 찾기 - O(N logN)
구현
Beta Was this translation helpful? Give feedback.
All reactions