본문 바로가기

투포인터

(3)
[C++] 백준 1253번 - 좋다 문제 1253번https://www.acmicpc.net/problem/1253  이번 문제는 투포인터를 사용하는 문제이다. N개의 수 중 어떤 수가 다른 수 두 개의 합으로 나타낼 수 있는지 알아내고, 그 개수를 출력하면 된다. 배열에 수를 넣고 해당 수의 개수만큼 정렬을 해준다(투포인터를 이용하려면 정렬은 필수!). 투 포인터 left에는 0, right에는 N-1로 초기화한다. 같은 수의 합으로 나타내면 안 되기 때문에 left가 right보다 작을 때까지 계속해서 반복해주고, left,right를 인덱스로 넣은 값의 합과 찾을 숫자를 비교해준다.  같다면 서로 다른 숫자의 합이 찾는 값이어야하기 때문에 찾을 숫자의 인덱스 i와 left, right를 비교해준다. 둘 다 같지 않다면 좋은 수의 개수..
[C++] 백준 2467번 - 용액 문제 2467번 https://www.acmicpc.net/problem/2467 2467번: 용액 첫째 줄에는 전체 용액의 수 N이 입력된다. N은 2 이상 100,000 이하의 정수이다. 둘째 줄에는 용액의 특성값을 나타내는 N개의 정수가 빈칸을 사이에 두고 오름차순으로 입력되며, 이 수들은 모두 - www.acmicpc.net 오늘은 투포인터를 사용하는 문제를 골랐다!! 투 포인터는 오름차순으로 정렬된 데이터를 양끝(left, right)에서부터 시작하여 탐색하는 방법이다. 이 문제에서 입력값이 오름차순으로 들어오기 때문에 따로 정렬은 안 해줘도 된다. left와 right에는 각각 첫번째 인덱스와 마지막 인덱스인 0과 N-1로 초기화시켜준다. while문을 이용하여 left와 right가 바로 옆..
[C++] 백준 3273 두 수의 합 오늘도 도서관에 왔다. 그런데 점심 먹고 이것저것 하다 보니 벌써 1시 45분이다 ㅎㅎ. 얼른 문제를 풀어야지... 문제 https://www.acmicpc.net/problem/3273 3273번: 두 수의 합 n개의 서로 다른 양의 정수 a1, a2, ..., an으로 이루어진 수열이 있다. ai의 값은 1보다 크거나 같고, 1000000보다 작거나 같은 자연수이다. 자연수 x가 주어졌을 때, ai + aj = x (1 ≤ i < j ≤ n)을 만족하는 www.acmicpc.net 오늘의 문제이다. 음... 이 문제는 배열에 입력을 받고 그 배열을 오름차순으로 정렬해 주어야겠다. 그리고 앞이랑 뒤에 포인터로 가리켜서 비교해 보면 될 것 같다는 생각이 들어 이런 코드가 있나 찾아보니 https://an..