풀이 보관함

[JAVA] BOJ 2467 용액 본문

problem solving/백준

[JAVA] BOJ 2467 용액

viin 2024. 2. 20. 20:46

🔗 문제

2467번: 용액

 

2467번: 용액

첫째 줄에는 전체 용액의 수 N이 입력된다. N은 2 이상 100,000 이하의 정수이다. 둘째 줄에는 용액의 특성값을 나타내는 N개의 정수가 빈칸을 사이에 두고 오름차순으로 입력되며, 이 수들은 모두 -

www.acmicpc.net

 

✏️ 풀이

문제에서 보아야 할 것은 이미 용액이 "정렬된 상태 "인 것이다.

더 해야 할 용액도 2개다 싶어서 투포인터를 떠올렸다.

  1. 양 끝을 start, end라는 변수로 가리키며 그 합을 sum에 저장해 주었다.
    • 이때 값은 오름차순 정렬이므로 start는 가장 작은 값(0 위치), end는 가장 큰 값 (N-1 위치)을 가리킨다.
  2. 만약 sum이 0이라면 더 이상 진행할 필요가 없다.
  3. 만약 sum < 0 이라면 작은 값을 가리키는 start를 증가시켜 sum이 0에 더 가깝게 해 준다.
  4. 만약 sum > 0이라면 큰 값을 가리키는 end를 감소시켜 sum이 0에 더 가깝게 해 준다.

 

이 과정을 start < end라는 조건하에 while문을 돌려주었다.

해당 조건으로 start와 end가 상대적으로 작은 값, 큰 값 포인팅을 유지하며 종료할 수 있게 된다.'

 

 

💾  소스