투포인터 4

[BOJ] 1253번 좋다 (C++)

문제 (https://www.acmicpc.net/problem/1253) 1253번: 좋다 첫째 줄에는 수의 개수 N(1 ≤ N ≤ 2,000), 두 번째 줄에는 i번째 수를 나타내는 Ai가 N개 주어진다. (|Ai| ≤ 1,000,000,000, Ai는 정수) www.acmicpc.net 처음엔 검사하는 숫자보다 작은 수들로만 검사하는 숫자가 만들어진다고 생각했다. 하지만 음수도 가능하기 때문에 -4 -2 -2 같은 케이스가 존재한다. (-4가 좋은 수) 또한 자기 자신은 서로 다른 두 수에 해당하면 안 되므로 예외 처리를 해주어야 한다. 나는 그냥 for문을 돌 때마다 원본 벡터를 복사한 벡터에 해당 숫자를 erase로 제거하여 사용했다. - n이 2보다 작거나 같으면 다른 수 두 개의 합으로 나타..

ALGORITHM/BOJ 2022.01.19

[BOJ] 1484번 다이어트 (C++)

문제 (https://www.acmicpc.net/problem/1484) 1484번: 다이어트 성원이는 다이어트를 시도중이다. 성원이는 정말 정말 무겁기 때문에, 저울이 부셔졌다. 성원이의 힘겨운 다이어트 시도를 보고만 있던 엔토피아는 성원이에게 새로운 저울을 선물해 주었다. www.acmicpc.net (현재 몸무게)^2 - (예전 몸무게)^2 = 찐 몸무게 1부터 g까지의 모든 수를 배열에 담아두고 투 포인터를 실행했다. end는 현재 몸무게를 가리키는 포인터이고 start는 예전 몸무게를 가리키는 포인터로 설정했다. 위 식대로 찐 몸무게를 구한 후 구한 값이 g와 같다면 정답을 담아두는 배열에 삽입한다. g보다 작다면? 찐 몸무게를 더 늘려야 하므로 end(현재 몸무게)를 증가 g보다 크거나 같다..

ALGORITHM/BOJ 2022.01.03

[BOJ] 1644번 소수의 연속합 (C++)

문제 (https://www.acmicpc.net/problem/1644) 1644번: 소수의 연속합 첫째 줄에 자연수 N이 주어진다. (1 ≤ N ≤ 4,000,000) www.acmicpc.net 1. 2 이상 N 이하의 모든 소수를 벡터에 삽입한다. 2. start부터 end까지의 합에 따라 1번에서 구한 벡터 위에서 start와 end를 움직인다. 2-1. 합이 n보다 작다면? end 증가 2-2. 합이 n보다 크거나 같다면? start 증가 2-3. 합이 n과 같다면? ans 증가 [소스코드] 더보기 2021-12-28 Gold 3 - 수학 - 정수론 - 두 포인터 - 소수 판정 - 에라토스테네스의 체

ALGORITHM/BOJ 2022.01.03

[BOJ] 2470번 두 용액 (C++)

문제 (https://www.acmicpc.net/problem/2470) 2470번: 두 용액 첫째 줄에는 전체 용액의 수 N이 입력된다. N은 2 이상 100,000 이하이다. 둘째 줄에는 용액의 특성값을 나타내는 N개의 정수가 빈칸을 사이에 두고 주어진다. 이 수들은 모두 -1,000,000,000 이상 1,000,00 www.acmicpc.net 투 포인터 알고리즘을 사용하여 해결한 문제이다. start를 맨 앞, end를 맨 뒤에 두고 움직이기 시작한다. start와 end가 가리키는 값을 더하여 최솟값인지 절댓값을 취해 비교한다. 더한 값이 0보다 작다면? 숫자를 크게 하여 0에 가까워져야 하므로 start 증가 더한 값이 0보다 크거나 같다면? 숫자를 작게 하여 0에 가까워져야 하므로 end..

ALGORITHM/BOJ 2022.01.03