본문 바로가기

알고리즘/백준

[백준] 2470 두 용액

문제 링크 : www.acmicpc.net/problem/2470

 

2470번: 두 용액

첫째 줄에는 전체 용액의 수 N이 입력된다. N은 2 이상 100,000 이하이다. 둘째 줄에는 용액의 특성값을 나타내는 N개의 정수가 빈칸을 사이에 두고 주어진다. 이 수들은 모두 -1,000,000,000 이상 1,000,00

www.acmicpc.net

파이썬으로 백준 첫 골드문제

간단한 투포인터 문제다

생각을 잘못해서 분기가 2배로 늘었다. 다른 사람 풀이를 보고 굳이 분기 안해도 되는 부분을 알았다.

 

내코드

 

import sys
if __name__ == '__main__':
    N = map(int,input().rstrip())
    arr = list(map(int,input().rstrip().split()))

    arr.sort()
    left = 0; right = len(arr)-1;
    # 1. arr[left]와 arr[right]가 모두 0보다 크거나 같을 때 => right--
    # 2. arr[left]와 arr[right]가 모두 0보다 작을 때 => left++
    # 3. arr[left]와 arr[right]의 부호가 다를 때 => 1) 절대값이 큰 쪽이 moving
    ans = sys.maxsize
    A = sys.maxsize
    B = sys.maxsize
    while(left < right):
        if (abs(arr[left] + arr[right]) < ans):
            ans = abs(arr[left]+arr[right])
            A = arr[left]
            B = arr[right]
        if arr[left] >= 0 and arr[right] >= 0:
            right-=1
        elif arr[left] <0 and arr[right] <0:
            left+=1
        else:
            if abs(arr[left]) > abs(arr[right]):
                left+=1
            else:
                right-=1
    print(A,B)

'알고리즘 > 백준' 카테고리의 다른 글

[백준] 2042 구간 합 구하기  (2) 2020.12.02
[백준] 1072 게임  (0) 2020.12.01
[백준] 1806 부분합  (0) 2020.11.24
[백준] 1920 수 찾기  (0) 2020.11.24
[백준] 18228 펭귄추락  (0) 2020.11.11