-
[백준 2470번] 두 용액Coding Test/백준 2021. 3. 13. 01:49
# 문제
내 풀이
n = int(input()) data = list(map(int, input().split())) min_val = 2 * int(10e9) # 혼합 용액의 최소 특성값 left = 0 right = n - 1 data.sort() # 오름차순 정렬 # 양 끝의 포인터가 엇갈리기 전까지 while left < right: # 현재 가리키는 두 용액의 특성값 합이 최소 특성값이라면 최솟값 갱신 if abs(data[left] + data[right]) < min_val: min_val = abs(data[left] + data[right]) min_pair = (data[left], data[right]) # right가 가리키는 특성값의 절대값이 더 크다면 right를 1 감소시킴 if abs(data[left]) < abs(data[right]): right -= 1 # left가 가리키는 특성값의 절대값이 크거나 같다면 left를 1 증가시킴 else: left += 1 # 특성값의 합이 최소인 두 용액의 특성값을 오름차순으로 출력 print(*min_pair)
시간 복잡도
Nlog(N) - 정렬 수행 시간이 가장 오래 걸리므로
'Coding Test > 백준' 카테고리의 다른 글
[백준 7568번] 덩치 (0) 2021.03.19 [백준 1806번] 부분합 (0) 2021.03.16 [백준 3273] 두 수의 합 (0) 2021.03.10 [백준 4948번] 베르트랑 공준 (0) 2021.03.06 [백준 1929번] 소수 구하기 (0) 2021.03.04