더북(TheBook)

[3, 5, 8]이라는 배열을 예로 들어 보자. 3이 나오면 existingNumbers의 인덱스 31을 넣는다. 이제 existingNumbers 배열은 대략 다음과 같을 것이다.

[undefined, undefined, undefined, 1]

인덱스 31이 있으니 앞으로 주어진 array에 이미 3이 나왔었음을 알고 기억할 수 있다.

다음으로 array에서 5가 나오면 existingNumbers의 인덱스 51을 넣는다.

[undefined, undefined, undefined, 1, undefined, 1]

끝으로 8이 나오면 existingNumbers 배열은 다음과 같을 것이다.

[undefined, undefined, undefined, 1, undefined, 1, undefined, undefined, 1]

본질적으로 existingNumbers의 인덱스를 사용해 지금까지 array에서 어떤 숫자들이 나왔었는지 기억한다.

진짜 요령은 지금부터다. 코드는 적절한 인덱스에 1을 저장하기 앞서 이 인덱스의 값이 이미 1인지 확인한다. 1이면 이미 나왔던 숫자라는 뜻이며 따라서 중복 값을 찾은 것이다. 이때는 바로 true를 반환하고 함수를 도중에 중단시킨다. true를 반환하지 않고 루프 끝까지 갔다면 중복 값이 없다는 뜻이니 false를 반환한다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.