[BaekJoon] 백준 2473번 : 세 용액
Updated:
2473번 : 세 용액
[BaekJoon] 백준 2467번 : 용액 의 업그레이드 문제이다.
포인터 두 개를 어떤 기준으로 잡고 옮길지만 정하면 풀 수 있는 문제였는데 정말 어려웠다..
처음엔 두 개를 고정시키고 한 개를 움직이며 비교했지만 시간초과가 발생했다.
기준을 하나 두고 포인터 두 개를 정한 뒤 값을 더해 음수이면 왼쪽 포인터를 오른쪽으로
양수이면 오른쪽 포인터를 왼쪽으로 옮겨가며 값을 비교하면 된다.
골드 4 였지만 정말 어려웠다..
def solution():
answer = [float('inf'), 0, 0, 0]
for i in range(N - 2):
start, end = i + 1, N - 1
while start != end:
total = arr[i] + arr[start] + arr[end]
if abs(total) < abs(answer[0]):
answer = [total, i, start, end]
if total < 0:
start += 1
elif total > 0:
end -= 1
else:
print(f"{arr[i]} {arr[start]} {arr[end]}")
exit(0)
print(f"{arr[answer[1]]} {arr[answer[2]]} {arr[answer[3]]}")
exit(0)
if __name__ == "__main__":
N = int(input())
arr = list(map(int, input().split()))
arr.sort()
solution()
Leave a comment