๊ธธ์ด๊ฐ N์ธ ์์ด์ด ์ฃผ์ด์ก์ ๋, ๊ทธ ์์ด์ ํฉ์ ๊ตฌํ๋ ค๊ณ ํ๋ค. ํ์ง๋ง, ๊ทธ๋ฅ ๊ทธ ์์ด์ ํฉ์ ๋ชจ๋ ๋ํด์ ๊ตฌํ๋ ๊ฒ์ด ์๋๋ผ, ์์ด์ ๋ ์๋ฅผ ๋ฌถ์ผ๋ ค๊ณ ํ๋ค. ์ด๋ค ์๋ฅผ ๋ฌถ์ผ๋ ค๊ณ ํ ๋, ์์น์ ์๊ด์์ด ๋ฌถ์ ์ ์๋ค. ํ์ง๋ง, ๊ฐ์ ์์น์ ์๋ ์(์๊ธฐ ์์ )๋ฅผ ๋ฌถ๋ ๊ฒ์ ๋ถ๊ฐ๋ฅํ๋ค. ๊ทธ๋ฆฌ๊ณ ์ด๋ค ์๋ฅผ ๋ฌถ๊ฒ ๋๋ฉด, ์์ด์ ํฉ์ ๊ตฌํ ๋ ๋ฌถ์ ์๋ ์๋ก ๊ณฑํ ํ์ ๋ํ๋ค.
์๋ฅผ ๋ค๋ฉด, ์ด๋ค ์์ด์ด {0, 1, 2, 4, 3, 5}์ผ ๋, ๊ทธ๋ฅ ์ด ์์ด์ ํฉ์ ๊ตฌํ๋ฉด 0+1+2+4+3+5 = 15์ด๋ค. ํ์ง๋ง, 2์ 3์ ๋ฌถ๊ณ , 4์ 5๋ฅผ ๋ฌถ๊ฒ ๋๋ฉด, 0+1+(23)+(45) = 27์ด ๋์ด ์ต๋๊ฐ ๋๋ค.
์์ด์ ๋ชจ๋ ์๋ ๋จ ํ๋ฒ๋ง ๋ฌถ๊ฑฐ๋, ์๋๋ฉด ๋ฌถ์ง ์์์ผํ๋ค.
์์ด์ด ์ฃผ์ด์ก์ ๋, ์์ด์ ๊ฐ ์๋ฅผ ์ ์ ํ ๋ฌถ์์ ๋, ๊ทธ ํฉ์ด ์ต๋๊ฐ ๋๊ฒ ํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์์ค.
์ ๋ ฅ
์ฒซ์งธ ์ค์ ์์ด์ ํฌ๊ธฐ N์ด ์ฃผ์ด์ง๋ค. N์ 10,000๋ณด๋ค ์์ ์์ฐ์์ด๋ค. ๋์งธ ์ค๋ถํฐ N๊ฐ์ ์ค์, ์์ด์ ๊ฐ ์๊ฐ ์ฃผ์ด์ง๋ค. ์์ด์ ์๋ -10,000๋ณด๋ค ํฌ๊ฑฐ๋ ๊ฐ๊ณ , 10,000๋ณด๋ค ์๊ฑฐ๋ ๊ฐ์ ์ ์์ด๋ค.
์ถ๋ ฅ
์๋ฅผ ํฉ์ด ์ต๋๊ฐ ๋์ค๊ฒ ๋ฌถ์์ ๋ ํฉ์ ์ถ๋ ฅํ๋ค. ์ ๋ต์ ํญ์ 231๋ณด๋ค ์๋ค.
๐ก ์์์ ์์๋ฅผ ๋ณ๋๋ก ๊ตฌ๋ถํจ
๐ก ์์๋ ๋ด๋ฆผ์ฐจ์ํ์ฌ ๊ณฑํ ํ, ์์๊ฐ ํ์๊ฐ๋ผ๋ฉด ๋๋จธ์ง ์๋ฅผ ๋ํด์ค
๐ก ์์๋ ์ค๋ฆ์ฐจ์ํ์ฌ ๊ณฑํ ํ, 0์ ๊ณ ๋ คํ์ฌ ๋๋จธ์ง ์๋ฅผ ๋ํ ์ง ๋ง์ง ๊ฒฐ์ ํจ
๐ก 0์ด ์๊ณ ์์์ ๊ฐ์๊ฐ ํ์์ด๋ฉด ๋ ๊ฐ๋ฅผ ๊ณฑํด 0์ผ๋ก ๋ง๋ค ์ ์์
๐ก 1์ ์ด๋ค ์์ ๊ณฑํ๋ ๊ฒ๋ณด๋ค ๋ํ๋ ๊ฒ์ด ๋ ํผ
ArrayList<Integer> plus = new ArrayList<>();
ArrayList<Integer> minus = new ArrayList<>();
for(int i=0; i<n; i++) {
if(arr[i] < 0) {
minus.add(arr[i]);
arr[i] = 0;
}
plus.add(arr[i]);
}
for(int i=0; i<pSize/2; i++) {
int a = plus.remove(0);
int b = plus.remove(0);
if(a == 1 || b == 1) {
sum += (a+b);
} else {
sum += (a*b);
}
}
if(pSize % 2 != 0) {
sum += plus.remove(0);
}
for(int i=0; i<mSize/2; i++) {
int a = minus.remove(0);
int b = minus.remove(0);
sum += (a*b);
}
if(zero == -1 && mSize % 2 != 0) {
sum += minus.remove(0);
}
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
public class BOJ_1744 {
public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int n = Integer.parseInt(br.readLine());
int zero = -1;
Integer[] arr = new Integer[n];
for(int i=0; i<n; i++) {
arr[i] = Integer.parseInt(br.readLine());
if(arr[i] == 0) zero = 1;
}
Arrays.sort(arr, Collections.reverseOrder());
ArrayList<Integer> plus = new ArrayList<>();
ArrayList<Integer> minus = new ArrayList<>();
for(int i=0; i<n; i++) {
if(arr[i] < 0) {
minus.add(arr[i]);
arr[i] = 0;
}
plus.add(arr[i]);
}
plus.removeAll(Arrays.asList(Integer.valueOf(0)));
Collections.sort(minus);
int pSize = plus.size();
int mSize = minus.size();
int sum = 0;
for(int i=0; i<pSize/2; i++) {
int a = plus.remove(0);
int b = plus.remove(0);
if(a == 1 || b == 1) {
sum += (a+b);
} else {
sum += (a*b);
}
}
if(pSize % 2 != 0) {
sum += plus.remove(0);
}
for(int i=0; i<mSize/2; i++) {
int a = minus.remove(0);
int b = minus.remove(0);
sum += (a*b);
}
if(zero == -1 && mSize % 2 != 0) {
sum += minus.remove(0);
}
System.out.println(sum);
}
}
์ฑ๊ณตโจ