๐งธ number ์ค์ ๋ถ๋ถ์ ๋นผ๊ณ ์ฝ๋๋ฅผ ๋๋ ค์ ๋ฐํ์์๋ฌ๊ฐ ๋ฐ์ํ๋๋ฐ ๋ค๋๊ฒ ์์์ฐจ๋ ธ๋ค...ํ..
๐งธ ์ด๋ถํ์ ๋ฌธ์ ๋ฅผ ์ข ๋ ํ์ด๋ด์ผ๊ฒ ๋ค.
๐ ํฉ๊ณ๊ฐ ๊ฐ์ ๊ฒฝ์ฐ๋ฅผ ์ ๊ฒฝ์จ์ผํ๋ค.
๐จ ์ฐธ๊ณ ์ฝ๋
const fs = require('fs');
const input = fs.readFileSync('/dev/stdin').toString().trim().split('\n');
const N = +input.shift();
const number = input[0]
.split(" ")
.map(Number)
.sort((a, b) => a - b);
let answer = 0;
for (let i = 0; i <=N-3 ; i++) {
const target = number[i];
if(target>0) break;
let left = i + 1;
let right = N - 1;
while (left < right) {
const sum = target + number[left] + number[right];
if (sum === 0) {
if (number[left] === number[right]) {
answer += ((right - left + 1) * (right - left)) / 2;
break;
}
let leftCount = 1;
let rightCount = 1;
while (number[left] === number[left + 1]) {
leftCount++;
left++;
}
while (number[right] === number[right - 1]) {
rightCount++;
right--;
}
answer += leftCount * rightCount;
}
if (sum < 0) left++;
else right--;
}
}
console.log(answer);