정리
백준 2473번: 세 용액 본문
백준 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