2473. 세 용액
2473번: 세 용액
첫째 줄에는 전체 용액의 수 N이 입력된다. N은 3 이상 5,000 이하의 정수이다. 둘째 줄에는 용액의 특성값을 나타내는 N개의 정수가 빈칸을 사이에 두고 주어진다. 이 수들은 모두 -1,000,000,000 이상
www.acmicpc.net
- 내 풀이: fail
- n개의 원소 중 임의의 3개를 뽑아서 합을 구하는 방식으로 하게 되면 시간복잡도가 O(n^3)까지 올라감
- →투 포인터를 사용해서 O(n^2)으로 풀어야 통과할 수 있다.
- minV값을 int(1e9) 써서 틀린 거였음 ㅡㅡ.......
- -> float('inf') 로 사용해야 통과.......
import sys
input=sys.stdin.readline
n=int(input())
lst=sorted(list(map(int,input().split())))
minV=float('inf')
answer=[]
def solve(n):
global minV
global answer
tmp=[]
for i in range(n-2):
left=i+1
right=n-1
while left<right:
tmp=[lst[i],lst[left],lst[right]]
if minV>abs(sum(tmp)):
minV=abs(sum(tmp))
answer=tmp[:]
if sum(tmp) >0:
right-=1
elif sum(tmp) <0:
left+=1
else: #0이면
answer=tmp[:]
return answer
return answer
answer=solve(n)
print(*sorted(answer))
'코딩테스트 > BOJ' 카테고리의 다른 글
| [백준] [구현] 7568. 덩치 (0) | 2023.05.01 |
|---|---|
| [백준] [DP] 14501. 퇴사 (0) | 2023.04.30 |
| [백준] [BFS] 14503. 로봇 청소기 (0) | 2023.04.28 |
| [백준] [구현] 20291. 파일 정리 (0) | 2023.04.28 |
| [백준] [DFS / BFS] [백트래킹] 14502. 연구소 (0) | 2023.04.28 |