For Programmer
백준 2467번 파이썬 문제풀이(용액) 본문
728x90
간단히 투포인트 조건을 음수일 때 0일때 양수일때로 나누어 문제를 풀면 쉽게 풀 수 있다.
import sys
N = int(input())
array = list(map(int, input().split()))
s = 0
e = N - 1
r_s = 0 # 출력을 위해 최솟값 시작 인덱스를 저장할 변수
r_e = N - 1 # 출력을 위해 최솟값 끝 인덱스를
result = sys.maxsize # 최댓값으로 설정
while s < e:
if array[s] + array[e] == 0: # 만약 합이 0이라면
r_s, r_e = s, e # 그 위치를 저장후
break # 탈출
elif abs(array[s] + array[e]) < result: # 만약 합의 절대값이 저장된 값보다 더 작다면(0에 가깝다면)
result = abs(array[s] + array[e]) # 그 값을 저장하고
r_s, r_e = s, e # 그 위치도 저장
# 위치 처리
if array[s] + array[e] < 0: # 만약 음수라면
s += 1 # 시작인덱스를 한칸 뒤로 민다.
elif array[s] + array[e] > 0: # 만약 양수라면
e -= 1 # 끝 인덱스를 한칸 당긴다.
print(array[r_s], array[r_e])
728x90
'코팅테스트 > 백준 문제 모음' 카테고리의 다른 글
백준 14465번 파이썬 문제풀이(소가 길을 건너간 이유5) (0) | 2022.02.15 |
---|---|
백준 9007번 파이썬 문제풀이(카누 선수) (0) | 2022.02.15 |
백준 22988번 파이썬 문제풀이(재활용 캠페인) (0) | 2022.02.14 |
백준 3273번 파이썬 문제풀이(두 수의 합) (0) | 2022.02.14 |
백준 6485번 파이썬 문제풀이(삼성시의 버스 노선) (0) | 2022.02.14 |
Comments