0Pricing
Coding Interview Prep · 강의

주어진 합을 만드는 쌍 찾기

O(n^2) 완전 탐색보다 빠르게 해결합니다

주어진 합을 만드는 쌍 찾기은(는) CoddyKit의 무료 Coding Interview Prep 강의입니다. 이것은 4개 중 2번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 Coding Interview Prep 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. Coding Interview Prep 강의에는 총 4개의 강의가 포함되어 있습니다.

두 수의 합 문제

배열과 목표값이 주어졌을 때, 두 값을 add하여 목표값을 만드는 쌍을 찾으십시오. 대회에서 가장 흔한 입문 문제 중 하나입니다. 🔍

완전 탐색 방식

가장 단순한 방법은 중첩 반복문 두 개로 모든 쌍을 시도하는 것입니다. 동작은 하지만 모든 쌍을 확인하는 데 O(n^2)이 걸려 너무 느릴 수 있습니다.

for i in range(n):
    for j in range(i + 1, n):
        if a[i] + a[j] == target:
            return (i, j)

완전 탐색이 한계에 부딪히는 지점

n이 100000에 가까우면 O(n^2)은 100억 번의 검사이며 TLE가 발생합니다. 제한 조건은 더 빠른 방법을 찾으라고 알려 주고 있습니다.

정렬한 뒤 훑기

먼저 배열을 sort하면 양끝의 두 포인터로 한 번의 순회에 문제를 해결할 수 있습니다. 정렬에 O(n log n)이 걸리고, 그다음 순회에는 O(n)이 걸립니다.

a.sort()
left, right = 0, len(a) - 1

목표값과 비교하기

각 단계에서 a[left] + a[right]를 확인하십시오. 이 하나의 값이 추측 없이 다음 이동을 결정합니다.

total = a[left] + a[right]

정확히 일치하면 완료

합이 목표값과 같으면 쌍을 찾은 것입니다. 유효한 답 하나만 필요하므로 즉시 반환하십시오.

if total == target:
    return (left, right)

그렇지 않으면 조정하기

합이 너무 작으면 왼쪽 포인터를 오른쪽으로 이동하고, 너무 크면 오른쪽 포인터를 왼쪽으로 이동하십시오. 정렬된 순서가 각 이동이 도움이 된다는 것을 보장합니다.

elif total < target:
    left += 1
else:
    right -= 1

쌍이 존재하지 않는 경우

일치하는 값 없이 포인터가 서로 지나치면 유효한 쌍이 존재하지 않습니다. 반복문이 끝나는 것 자체가 완전한 답입니다.

해시 집합이라는 대안

원래 인덱스를 유지해야 한다면 해시 집합이 더 깔끔합니다. 각 값에 대해 목표값에서 그 값을 뺀 값이 이미 등장했는지 확인하십시오.

seen = set()
for x in a:
    if target - x in seen:
        # found
        pass
    seen.add(x)

방법 선택하기

배열이 정렬되어 있거나 정렬할 수 있다면 두 포인터를 사용하십시오. 정렬하지 않고 정확히 O(n)을 달성해야 하거나 인덱스를 유지해야 한다면 해시 집합을 사용하십시오.

중복값 주의하기

어떤 값이 자기 자신과 짝을 이룰 수 있다면 두 인덱스가 서로 달라야 합니다. 간단히 left != right 또는 i != j인지 확인하면 이 함정을 피할 수 있습니다.

간단히 확인하기

목표값이 되는 쌍을 찾을 때 O(n^2) 완전 탐색보다 빠른 방법을 원합니다.

복습

두 포인터로 정렬한 뒤 훑으면 O(n log n)에 목표 쌍을 찾을 수 있고, 인덱스가 중요할 때는 해시 집합으로 O(n)에 해결할 수 있습니다. 제한 조건에 따라 선택하십시오. ✅

자주 묻는 질문

“주어진 합을 만드는 쌍 찾기” 강의는 무료인가요?

네 — “주어진 합을 만드는 쌍 찾기” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 Coding Interview Prep 강의 전체를 잠금 해제할 수 있습니다. Coding Interview Prep 강의에는 총 4개의 강의가 포함되어 있습니다.

“주어진 합을 만드는 쌍 찾기”에서 뭘 배우나요?

O(n^2) 완전 탐색보다 빠르게 해결합니다 브라우저에서 직접 실행하는 실습 코드로 Coding Interview Prep을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.

Coding Interview Prep을(를) 시작하는 데 경험이 필요한가요?

사전 경험은 필요하지 않습니다. CoddyKit의 Coding Interview Prep은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 2번째 강의입니다.

“주어진 합을 만드는 쌍 찾기” 강의는 얼마나 걸리나요?

대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.

이 Coding Interview Prep 강의에서 코드를 작성하고 실행할 수 있나요?

네. 모든 Coding Interview Prep 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.

이 강의의 모든 강의

  1. 정렬된 배열에서 투 포인터
  2. 주어진 합을 만드는 쌍 찾기
  3. 제자리에서 중복 제거하기
  4. 정렬된 두 시퀀스 병합하기
← Coding Interview Prep(으)로 돌아가기