[알고리즘] - 두 용액
문제
풀이
1
- 값이 A라면, abs(리스트 값 + A) 인 리스트 L 생성
 
- 최솟값 구하기
 
2
- sort
 
- 값이 A라면 -A Search(이진 탐색)
 
- 있다면 정답 출력
 
- 없다면?
- left나 right 중 더 가까운 값 찾기
 
 
- 반복
 
from bisect import bisect_left
sec = 2000000000
# 전체 용액의 수 N이 입력
N = int(input("용액의 수 : "))
# 용액의 특성값을 나타내는 N개의 정수
liquid = list(map(int, input().split()))
# sort
liquid.sort()
for i in liquid:
    # 1. 값이 A라면 -A Search(이진 탐색)
    left = bisect_left(liquid, -i)
    if left == 0:
        can = liquid[1]
    elif left == N:
        can = liquid[N-1]
    else:
        if liquid[left] == -i:
            fir = i
            sec = -i
            break
        else:
            if abs(i + liquid[left - 1]) > abs(i + liquid[left]):
                can = liquid[left]
            else:
                can = liquid[left - 1]
    if sec > can:
        fir = i
        sec = can
if fir > sec:
    fir, sec = sec, fir
print(fir, sec)
                
                    
        
    
    
    
    
    
                
                
                
                
                    
                        
                            
                            
                            Author And Source
                            
                            이 문제에 관하여([알고리즘] - 두 용액), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
                                
                                https://velog.io/@shstl98/알고리즘-두-용액
                            
                            
                            
                                저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
                            
                            
                                
                                
                                
                                
                                
                                우수한 개발자 콘텐츠 발견에 전념
                                (Collection and Share based on the CC Protocol.)
                            
                            
                        
                    
                
                
                
            
1
- 값이 A라면, abs(리스트 값 + A) 인 리스트 L 생성
 - 최솟값 구하기
 
2
- sort
 - 값이 A라면 -A Search(이진 탐색)
 - 있다면 정답 출력
 - 없다면?
- left나 right 중 더 가까운 값 찾기
 
 - 반복
 
from bisect import bisect_left
sec = 2000000000
# 전체 용액의 수 N이 입력
N = int(input("용액의 수 : "))
# 용액의 특성값을 나타내는 N개의 정수
liquid = list(map(int, input().split()))
# sort
liquid.sort()
for i in liquid:
    # 1. 값이 A라면 -A Search(이진 탐색)
    left = bisect_left(liquid, -i)
    if left == 0:
        can = liquid[1]
    elif left == N:
        can = liquid[N-1]
    else:
        if liquid[left] == -i:
            fir = i
            sec = -i
            break
        else:
            if abs(i + liquid[left - 1]) > abs(i + liquid[left]):
                can = liquid[left]
            else:
                can = liquid[left - 1]
    if sec > can:
        fir = i
        sec = can
if fir > sec:
    fir, sec = sec, fir
print(fir, sec)
                Author And Source
이 문제에 관하여([알고리즘] - 두 용액), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@shstl98/알고리즘-두-용액저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
                                
                                
                                
                                
                                
                                우수한 개발자 콘텐츠 발견에 전념
                                (Collection and Share based on the CC Protocol.)