코드
n = int(input())
solution = [*map(int, input().split())]
result = 200000000 # 가장 큰 값을 잡아주었다. 절대값이 들어갈 것이므로 양수
start, end = 0, n-1
new_sol1, new_sol2 = None, None # 0으로 초기화하지 않고 None으로 초기화해도 되는듯
while start < end: # start와 end 가 겹치면 안된다.
value = solution[start] + solution[end]
if (abs(value) <= result): # 두 용액 특성값이 result보다 0에 가까우면
new_sol1, new_sol2 = solution[start], solution[end]
result = abs(value)
if (value < 0): start +=1
else: end -= 1
print(new_sol1+new_sol2) # 결과출력
용액 문제들이 투포인터 이해에 도움이 많이 되는 것 같다.
'백준' 카테고리의 다른 글
[백준] 11866번 요세푸스 문제 0 파이썬 코드 (0) | 2023.11.06 |
---|---|
[백준] 2473번 세 용액 파이썬 코드 (1) | 2023.11.03 |
[백준] 3151번 합이 0 파이썬 코드 (0) | 2023.11.02 |
[백준] 1681번 줄 세우기 파이썬 코드 (0) | 2023.10.29 |
[백준] 1743번 음식물 피하기 파이썬 코드 (0) | 2023.10.28 |
코드
n = int(input())
solution = [*map(int, input().split())]
result = 200000000 # 가장 큰 값을 잡아주었다. 절대값이 들어갈 것이므로 양수
start, end = 0, n-1
new_sol1, new_sol2 = None, None # 0으로 초기화하지 않고 None으로 초기화해도 되는듯
while start < end: # start와 end 가 겹치면 안된다.
value = solution[start] + solution[end]
if (abs(value) <= result): # 두 용액 특성값이 result보다 0에 가까우면
new_sol1, new_sol2 = solution[start], solution[end]
result = abs(value)
if (value < 0): start +=1
else: end -= 1
print(new_sol1+new_sol2) # 결과출력
용액 문제들이 투포인터 이해에 도움이 많이 되는 것 같다.
'백준' 카테고리의 다른 글
[백준] 11866번 요세푸스 문제 0 파이썬 코드 (0) | 2023.11.06 |
---|---|
[백준] 2473번 세 용액 파이썬 코드 (1) | 2023.11.03 |
[백준] 3151번 합이 0 파이썬 코드 (0) | 2023.11.02 |
[백준] 1681번 줄 세우기 파이썬 코드 (0) | 2023.10.29 |
[백준] 1743번 음식물 피하기 파이썬 코드 (0) | 2023.10.28 |