Replies: 1 comment 1 reply
-
|
저도 이거 두 달 전에 풀었는데 다시 보니깐 새롭네요.. 자바는 너무 어려워 보입니다.. |
Beta Was this translation helpful? Give feedback.
1 reply
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
-
문제 : https://www.acmicpc.net/problem/2470
서로 다른 두 용액을 더해서 합이 최대한 0에 가깝게 만드는 문제
아이디어
각 용액의 범위가 -10억 ~ 10억 이므로 두 용액을 합친 값의 범위는 -20억 ~ 20억이므로 int형 변수로 처리 가능하다.
가장 먼저 생각난 방법은 이중 for문으로 두 용액을 섞을 수 있는 모든 경우를 다 비교해보는 것이다. 이렇게 하면 시간 복잡도가 O(N^2)이 된다. 이러면 N의 최댓값이 10억이니까 100억이 되버리므로 시간이 초과된다. 다른 방법을 찾아보자..
왼쪽 용액(left)을 골랐을 때 오른쪽 용액을 뭘 골라야 더해서 0에 가장 가까울까를 생각해보면 정렬이 된 용액들 중 A[left]를 고른 후 A[left+1 ~ N] 범위 내에서 -A[left]와 가장 가까운 수를 찾아 더해주면 0에 가장 가까울 것이다.
시간 복잡도
총 O(N log N)으로 시간 안에 풀이가 가능하다.
구현
음.. 저번에 풀었던건데 다시 풀라니까 모르겠어서 다른 사람 풀이 봤다.. 왜 다 까먹는거지..
그래도 다른 사람 풀이 보고 바로 이해하는 거에 만족
Beta Was this translation helpful? Give feedback.
All reactions