투 포인터

Bro1·2022년 10월 4일
0

코딩테스트

목록 보기
2/5

start/end index를 사용한 범위 구하기

start부터 end까지의 수를 더한 sum이 N과 같은 경우 찾기

sort
while(end!=N){
  sum > N : sum -= start; start++;  	//큰 경우 작은 수를 빼 범위를 줄인다.
  sum < N : end++; sum += end;  		//작은 경우 범위를 늘려 큰 수를 더한다.
  sum==N : end++; sum += end; cnt++; 	//같은 경우 범위를 늘려 반복한다.
}

좋은 수 찾기

좋은수 : 주어진 숫자 배열에서 다른 두 수의 합으로 표현가능한 수

투 포인터 이동 조건

A[i]+A[j] > K : j--;
A[i]+A[j] < K : i++;
A[i]+A[j] == K : i++; j--; cnt++;

추가적으로 고려할 조건

자기 자신을 제외한 다른 두 수의 합이어야 한다.
(하나의 수를 두 번 더해서도 안된다.)

if ( i != k && j != k ) result++; break;  // k는 찾는 수 K의 index
else if ( i == k ) i++;
else if ( j == k ) j--;
profile
정리

0개의 댓글