You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
constdNums=nums.map((num)=>num-target/2);//nums의 각 값을 target/2 값과의 편차들로 변환
20
+
constabsDNums=dNums.map(Math.abs);//dNumbs의 각 값에 절댓값 취해주기
21
+
22
+
constuniqueAbsDNums=newMap();//uniqueAbsDNums은 absDNums의 각 값을 key 값으로 하고 그 key의 부호를 boolean으로 변환한 값을 value로 갖는 map임
23
+
letj;
24
+
for(leti=0;i<absDNums.length;i++){
25
+
if(
26
+
uniqueAbsDNums.has(absDNums[i])&&//앞에 나온 수들 중 하나와 절댓값이 같은 수 등장 (absDNums[i])
27
+
dNums[i]>0!=uniqueAbsDNums.get(absDNums[i])//절댓값이 같은 이유가 앞에 나온 수들 중 하나와 아예 같은 값이어서가 아니라 부호만 반대인 수이기 때문이라는 것 체크 (두 수가 target/2로 같았다면 이 조건으로 걸러져 버리기 때문에 앞에서 early return하길 잘했음)
28
+
){
29
+
j=i;
30
+
break;
31
+
}
32
+
uniqueAbsDNums.set(absDNums[i],dNums[i]>0);
33
+
}
34
+
35
+
for(leti=0;i<absDNums.length;i++){
36
+
// j index 앞에 나오는, absDNums[j]와 같은 절댓값을 가지는 수 찾기(위 for문에서 j를 찾은 방식 덕분에 이 수는 absDNums[j]와 절댓값은 같지만 부호는 반대인 수일 것임)
0 commit comments