패스잇
CS 기초 · 중급

두 개의 포인터(Two Pointers) 기법이 어떤 문제들을 효과적으로 해결할 수 있는지 두 가지 예시를 들고, 각 예시에서 이 기법이 어떻게 적용되는지 설명해주세요.

힌트 · 정렬된 배열에서 합이 특정 값이 되는 두 수 찾기나, 회문(palindrome) 검사 등에서 유용하게 사용됩니다.

정렬투 포인터선형 탐색공간 복잡도시간 복잡도

모범답안

두 포인터 기법은 주로 배열이나 연결 리스트에서 특정 조건을 만족하는 요소를 효율적으로 찾을 때 유용합니다.

첫 번째 예시는 정렬된 배열에서 합이 특정 값 target이 되는 두 수를 찾는 문제입니다. 배열의 양 끝에 포인터 두 개를 두고, 두 포인터가 가리키는 값의 합이 target보다 작으면 왼쪽 포인터를 오른쪽으로, 크면 오른쪽 포인터를 왼쪽으로 이동시키면서 탐색합니다. 이 방법은 O(n)의 시간 복잡도로 문제를 해결할 수 있습니다.

두 번째 예시는 문자열이 회문인지 확인하는 문제입니다. 문자열의 처음과 끝에 포인터를 두고, 두 포인터가 가리키는 문자가 서로 다르면 회문이 아니고, 같으면 포인터를 안쪽으로 이동시키면서 비교합니다. 이 역시 O(n)의 시간 복잡도로 회문 여부를 판단할 수 있습니다. 두 포인터 기법은 추가적인 공간을 사용하지 않아 공간 복잡도도 O(1)입니다.

읽었다면, 이제 직접 답해볼 차례예요

패스잇 앱에서 이 질문에 말로 답하면 AI가 꼬리질문까지 이어가며 1:1 코칭합니다.

함께 보는 알고리즘 면접 질문

← 알고리즘 면접 질문 전체 보기