[백준/ 파이썬] 2467 용액
백준 2467번 용액
2467번은 용액 문제이다.
이 문제를 저는 두개의 포인터를 잡아서 풀었습니다. 리스트에서 시작부분을 가리키는 포인터를 start, 끝을 가리키는 포인터를 end라고 잡았습니다.
그리고 우리는 항상 합이 0에 가까운 값을 찾아야합니다.
start + end의 합이 0보다 작을때 0보다 클때를 생각해볼수 있습니다.
합이 0보다 작은경우라면 start를 한칸 앞당겨 합을 키울수 있습니다. 반대로 0보다 큰 경우라면 end를 한칸 줄여서 합의 크기가 줄어들도록 생각할 수 있습니다.
그리고 값을 비교할때는 음수인 경우에 -1을 곱해서 값을 비교해주었습니다. 그래야 -3과 2를 비교할때 2를 선택할수있으니까요.
코드는 다음과 같습니다.
def find_zero(array):
start = 0
end = len(array)-1
min = array[start] + array[end]
if min < 0:
min *= -1
idx_s = start #정답의 인덱스를 기억하는 변수
idx_e = end
while start < end:
temp = array[end] + array[start]
if temp < 0:
if min >= temp*(-1):
idx_s = start
idx_e = end
min = temp*(-1)
start += 1
else:
if min >= temp:
idx_s = start
idx_e = end
min = temp
end -= 1
return [idx_s, idx_e]
n = int(input())
array = [int(x) for x in input().split()]
array.sort()
a = find_zero(array)
for el in a:
print(array[el], end = ' ')
Author And Source
이 문제에 관하여([백준/ 파이썬] 2467 용액), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@rooster100/백준-파이썬-2467-용액저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)