해시·연습 문제

두 수의 합 인덱스

문제 설명PROBLEM

두 수의 합 인덱스

왜 이 문제를 푸나요?

모든 쌍을 확인하는 O(n²) 방식 대신 이미 본 값을 해시에 저장해 한 번의 순회로 줄이는 사고를 연습합니다. '필요한 짝'을 역으로 계산하는 것이 핵심입니다.

익혀야 할 개념

  • 보수 target-value
  • 값→인덱스 해시
  • 한 번의 순회
  • 중복 값 처리

과제

정수 리스트에서 합이 target이 되는 서로 다른 두 원소의 인덱스 [i, j]를 반환하세요. i < j이며 답은 하나만 존재합니다. 이중 반복문 대신 해시를 사용합니다.

함수

two_sum_indices(numbers, target)

목표 복잡도

평균 시간 O(n), 공간 O(n)

테스트 케이스

실행하면 아래 순서대로 채점합니다. print() 출력도 이 순서대로 쌓입니다.

#이름numberstarget기대값
1기본[2, 7, 11, 15]9[0, 1]
2음수 포함[4, -2, 6, 1]4[1, 2]
3같은 값 두 개[3, 3]6[0, 1]
4양 끝 원소[8, 1, 4, 6]14[0, 3]
50 두 개[0, 4, 3, 0]0[0, 3]

Python 표준 라이브러리는 사용할 수 있습니다. 함수 이름과 매개변수는 제시된 형태를 유지하세요.

개념 노트와 실수 포인트

해시 (dict / set)

  • 평균적으로 삽입·조회가 **O(1)**이라 개수 세기와 존재 여부 검사에 유용합니다.
  • dict.get(key, 0)set을 익혀두면 중첩 반복을 줄일 수 있습니다.