크래프톤 정글 TIL : 0916

lazyArtisan·2024년 9월 16일
0

정글 TIL

목록 보기
78/147

⚔️ 백준


📌 2470 두 용액

# 모든 용액에 대해서 다 확인해봐야 하는 건 맞음.
# 어떤 조합이 맞는지를 모르니까.
# 그 대신 각 용액에 대해 0에 가장 가까운 조합을 찾는 걸
# 이분 탐색으로 해주면 시간 복잡도 NlogN
N=int(input())
liq=list(map(int,input().split()))
liq.sort()
# 자기 자신+1과 끝 좌표(N)의 절반 인덱스에 있는 것과 합쳐보고
# 0보다 크면 아래쪽, 0보다 작으면 위쪽을 탐색
# 맨 마지막엔 0에 더 가까운 놈으로
fin_res,fin_a,fin_b=float('inf'),0,0
real_end=False
for i in range(N-1):
    s,e = i+1, N-1
    # 이분탐색 조지기
    while s<=e and not real_end:
        idx=(s+e)//2
        res=liq[i]+liq[idx]
        if res > 0:
            e = idx-1
        elif res < 0:
            s = idx+1
        else:
            real_end=True
    # idx 최종 업데이트
    if real_end:
        s,e=0 # 아무의미없는statement
    elif s<N:
        idx=s
    elif i<e:
        idx=e
    elif (abs(liq[s]+liq[i])<abs(liq[e]+liq[i])):
        idx=s
    else:
        idx=e 
    # 이제까지의 결과와 비교
    if abs(fin_res)>abs(res):
        fin_res=res
        fin_a=i
        fin_b=idx
    # 0이 나왔으면 야리끼리
    if real_end:
        break
if liq[fin_a] < liq[fin_b]:
    print(liq[fin_a],liq[fin_b])
else:
    print(liq[fin_b],liq[fin_a])

아니 도대체 왜 틀리는거지???
시간초과도 아니고 틀렸습니다가 뜨는 건 이해할 수가 없다.

퍼센트도 안 올라가고 바로 틀렸습니다 뜨는 거 보면 아예 로직이 틀렸다는 뜻
근데 아무리 봐도 어디가 틀렸는지 모르겠음

2연속 이렇게 당하니까 기운 빠진다
이것도 답지 봐야할듯

0개의 댓글