Coding Test/baekjoon
[백준 2467] 용액 - python (solved.ac - 골드 5)
조용장
2022. 4. 8. 22:00
https://www.acmicpc.net/problem/2467
2467번: 용액
첫째 줄에는 전체 용액의 수 N이 입력된다. N은 2 이상 100,000 이하의 정수이다. 둘째 줄에는 용액의 특성값을 나타내는 N개의 정수가 빈칸을 사이에 두고 오름차순으로 입력되며, 이 수들은 모두 -
www.acmicpc.net
풀이
문제를 보았을때 알수있는 힌트
처음에 문제를 보고 양쪽에서 천천히 값을 비교하며 결과를 뽑으면 될듯하다는 생각을 가졌다.
문제를 풀고나서 찾아보니 투 포인터 알고리즘이 있다는 것을 알수있었다.
투 포인터는 이름 그대로 두 가지 포인터를 사용하여 문자열이나 배열(또는 리스트)에서 원하는 값을 찾거나 반복문을 써야 할 때 쓰기 좋은 방식 이라고 한다.
투 포인터는 나중에 알고리즘으로 작성해 놓아도 좋을것같다.
이를 이용해서 최소 값이 나올때까지 계속 내리다보면 정답이 나온다!
import sys
input = sys.stdin.readline
n= int(input())
n_list = list(map(int,input().split()))
first=0
last=n-1
min = 2000000001
result=[]
while first<last:
if abs(n_list[first]+n_list[last])<min:
result=[n_list[first],n_list[last]]
min=abs(n_list[first]+n_list[last])
if n_list[first]+n_list[last]<0:
first+=1
else:
last-=1
print(*result)
https://github.com/dydwkd486/coding_test/blob/main/baekjoon/baekjoon2467.py
GitHub - dydwkd486/coding_test: 코딩테스트 공부한 내용 정리
코딩테스트 공부한 내용 정리. Contribute to dydwkd486/coding_test development by creating an account on GitHub.
github.com