[알고리즘] - 두 용액
문제
풀이
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.)