[BOJ] 2470

nerry·2022년 2월 16일
0

알고리즘

목록 보기
42/86

문제

me

import sys
input = sys.stdin.readline
n=int(input())
fluid=list(map(int,input().split()))
fluid.sort()
print(fluid)
l,r=0,n-1
min_sum=2000000000
min_friends=[fluid[l],fluid[r]]
while l<r: # 이분 탐색 이용
    temp=fluid[l]+fluid[r]
    print(l,r,fluid[l]+fluid[r],temp)
    if min_sum > abs(temp):
        min_sum=abs(temp)
        min_friends=fluid[l],fluid[r]
    if temp <= 0: # 합친 값이 음수이면 0에 가까이 가기 위해서 더 큰 값을 더 해주는 것
        l+=1
    else: # 마찬가지로 합친 값이 양수이니깐 작은 값을 더해 0에 가까워지도록 하기
        r-=1
print(*min_friends)

처음에는

# import sys
# input = sys.stdin.readline
# n=int(input())
# fluid=list(map(int,input().split()))
# fluid.sort(key=lambda x:abs(x))
# print(fluid)
# res=[]
# min_interval=int(1e9)
# min_friend=[]
# for i in range(n-1):
#     temp=abs(fluid[i]+fluid[i+1])
#     print(temp)
#     if min_interval > temp:
#         min_interval=temp
#         min_friend=[fluid[i],fluid[i+1]]
# print(*sorted(min_friend))

이런 식으로 풀었는데 왜,, 안되는지 잘 모르겠다 ㅎ.. 반례랑 테스트 케이스는 모조리 잘 나오던데... 생각해봐야 할 문제

profile
터벅터벅 개발(은좋은)자 로그

0개의 댓글