🔗 문제
2467번: 용액
첫째 줄에는 전체 용액의 수 N이 입력된다. N은 2 이상 100,000 이하의 정수이다. 둘째 줄에는 용액의 특성값을 나타내는 N개의 정수가 빈칸을 사이에 두고 오름차순으로 입력되며, 이 수들은 모두 -
www.acmicpc.net
✏️ 풀이
문제에서 보아야 할 것은 이미 용액이 "정렬된 상태 "인 것이다.
더 해야 할 용액도 2개다 싶어서 투포인터를 떠올렸다.
- 양 끝을 start, end라는 변수로 가리키며 그 합을 sum에 저장해 주었다.
- 이때 값은 오름차순 정렬이므로 start는 가장 작은 값(0 위치), end는 가장 큰 값 (N-1 위치)을 가리킨다.
- 만약 sum이 0이라면 더 이상 진행할 필요가 없다.
- 만약 sum < 0 이라면 작은 값을 가리키는 start를 증가시켜 sum이 0에 더 가깝게 해 준다.
- 만약 sum > 0이라면 큰 값을 가리키는 end를 감소시켜 sum이 0에 더 가깝게 해 준다.
이 과정을 start < end라는 조건하에 while문을 돌려주었다.
해당 조건으로 start와 end가 상대적으로 작은 값, 큰 값 포인팅을 유지하며 종료할 수 있게 된다.'
💾 소스
- 코드 보기 : 백준 BOJ 제출 링크