정리

백준 2473번: 세 용액 본문

Programming/백준 BOJ

백준 2473번: 세 용액

H.J.Park 2020. 9. 21. 02:05

백준 2473번: 세 용액

 

- 정렬과 투 포인터를 활용한 문제입니다.

 

 

용액의 값을 저장한 리스트를 오름차순으로 정렬합니다.

tmp를 inf로 선언하고 세 용액의 합이 0에 더 가까우면 세 용액의 합을 tmp에 저장합니다.

기준점 i 를 잡습니다.

left = i + 1, right = n - 1 로 투포인터를 잡습니다. liquid[i] + liquid[left] + liquid[right], 세 용액을 더한 값을 sum으로 합니다.

sum의 절댓값이 tmp의 절댓값보다 작으면 현재의 세 용액의 합이 0에 더 가까운 것이므로 tmp의 값을 sum으로 해줍니다. 

  i) sum < 0

  - sum이 0보다 작으면 left를 1 증가시켜 sum의 값이 커지도록 합니다.

  ii) sum > 0

  - sum이 0보다 크면 right를 1 감소시켜 sum의 값이 작아지도록 합니다. 

  iii) sum = 0

  - sum이 0이면 liquid[i], liquid[left], liquid[right]을 출력하고 종료합니다.

 

 

- 두 개의 포인터 이동은 left가 right보다 작을 때가지 실행합니다.

- 기준점 i는 0번째 인덱스부터 n-3번째 인덱스까지 for문을 통해 순서대로 설정합니다.

 

'Programming > 백준 BOJ' 카테고리의 다른 글

백준 2109번: 순회강연  (0) 2020.09.30
백준 1461번: 도서관  (0) 2020.09.28
백준 2470번: 두 용액  (0) 2020.09.08
백준 1946번: 신입 사원  (0) 2020.09.03
백준 2217번: 로프  (0) 2020.09.03
Comments