
const fs = require("fs");
const filePath = process.platform === "linux" ? "/dev/stdin" : "./예제.txt";
let input = fs.readFileSync(filePath).toString().trim();
// const fs = require('fs');
// let input = fs.readFileSync('/dev/stdin').toString().trim();
input = input.split('\n')
const N = +input[0]
let numbers = []
for (let i = 1; i <= N; i++) {
numbers.push(+input[i])
}
// 음수의 개수
// 0의 유무
let positive = []
let negative = []
let zero = []
numbers.map((el) => el > 0 ? positive.push(el) : el === 0 ? zero.push(0) : negative.push(el))
positive.sort((a, b) => b - a)
// 앞에서부터 두 개씩 곱...해야...
// 양수....
let positiveAnswer = 0;
// console.log('l', positive.includes(1))
let ones=0;
if (positive.includes(1)){
while(positive.includes(1)){
positive.pop(1)
ones++;
}
}
// console.log(ones)
positiveAnswer+=ones
// console.log(positive)
if (positive.length % 2 === 0) {
for (let i = 0; i < Math.floor(positive.length / 2); i++) {
// console.log('.', positive[2 * i] ,positive[2 * i + 1])
positiveAnswer += positive[2 * i] * positive[2 * i + 1]
}
} else if (positive.length % 2 !== 0) {
for (let i = 0; i < Math.floor(positive.length / 2); i++) {
positiveAnswer += positive[2 * i] * positive[2 * i + 1]
}
if (positive[positive.length - 1]) {
positiveAnswer += positive[positive.length - 1]
}
}
// 음수.............
// 으아....
negative.sort((a, b) => a - b)
let negativeAnswer = 0;
// console.log(positive, negative)
if (negative.length % 2 === 0) {
for (let i = 0; i < Math.floor(negative.length / 2); i++) {
// console.log(negative[2 * i ] ,negative[2 * i + 1])
negativeAnswer += negative[2 * i ] * negative[2 * i + 1]
}
} else if (negativeAnswer.length % 2 !== 0) {
if (negative.length === 1) {
if (zero.length > 0) {
negativeAnswer += negative[0] * 0
} else {
negativeAnswer += negative[0]
}
} else {
for (let i = 0; i < Math.floor(negative.length / 2); i++) {
// console.log( negative[2 * i + 1] ,negative[2 * (i + 1)])
negativeAnswer += negative[2 * i ] * negative[2 * i + 1]
}
// console.log(negativeAnswer)
if (zero.length > 0) {
if (negative[negativeAnswer.length - 1]) {
// 써주나마나지만 일단 예의상 적어주기
negativeAnswer += negative[negativeAnswer.length - 1] * 0
}
} else {
if (negative[negative.length - 1]) {
negativeAnswer += negative[negative.length - 1]
}
}
}
}
console.log(positiveAnswer + negativeAnswer)
// console.log(positiveAnswer)
// console.log(negativeAnswer)
나의 더러운 첫 번째 풀이는 정답지를 참고하지 않았다.
아래는 내 복잡한 코드와는 다르게 너무나도 깔끔해서 보고 충격 받은 정답지다.
https://tesseractjh.tistory.com/157
사실 밸로그 작성 끝내자마자 컴퓨터 끄려고 했는데 다른 분들 답안이 궁금해져서 검색해 보았다. 그리고 충격 받아서 다시 게시글 수정하기 버튼을 눌러서 이 부분을 추가한 것이다.