2036번: 수열의 점수
n개의 정수로 이루어진 수열이 있다. 이 수열에서 한 정수를 제거하거나, 또는 두 정수를 제거할 수 있다. 한 정수를 제거하는 경우에는 그 정수가 점수가 되고, 두 정수를 제거하는 경우에는 두
www.acmicpc.net
고려해야하는 경우
1. 0이 있는 경우, 음수와 곱하여 0으로 만들 수 있음
2. 3,1 의 경우, 둘을 곱해서 더하는 것이 아니라 하나씩 따로 더해야 더 큰 수가 나옴
import java.util.*;
public class Main {
static long answer=0;
static int zero=0;
public static void main(String[] args) {
int n;
Scanner sc=new Scanner(System.in);
n=sc.nextInt();
ArrayList<Long> arr1=new ArrayList<Long>();
ArrayList<Long> arr2=new ArrayList<Long>();
zero=0;
for(int i=0;i<n;i++) {
long num=sc.nextInt();
if(num<0) arr1.add(num);
else if(num>0) arr2.add(num);
else zero++;
}
Collections.sort(arr1);
Collections.sort(arr2,Comparator.reverseOrder());
if(arr1.size()>0) getArr1(arr1);
if(arr2.size()>0) getArr2(arr2);
System.out.println(answer);
}
//음수
static void getArr1(ArrayList<Long> arr){
for(int i=0;i<arr.size();i+=2) {
if((arr.size()-i)==1) {
if(zero>0) zero--;
else answer+=arr.get(i);
}
else answer+=(arr.get(i)*arr.get(i+1));
}
}
//양수
static void getArr2(ArrayList<Long> arr){
for(int i=0;i<arr.size();i+=2) {
if((arr.size()-i)==1)answer+=arr.get(i);
else {
if(arr.get(i)==1 || arr.get(i+1)==1)
answer+=(arr.get(i)+arr.get(i+1));
else answer+=(arr.get(i)*arr.get(i+1));
}
}
}
}
<ArrayList 정렬>
import java.util.*;
public class Main {
public static void main(String[] args) {
int n;
Scanner sc=new Scanner(System.in);
n=sc.nextInt();
ArrayList<Long> arr1=new ArrayList<Long>();
for(int i=0;i<n;i++) {
long num=sc.nextInt();
arr1.add(num);
}
//오름차순
Collections.sort(arr1);
//내림차순
Collections.sort(arr1,Comparator.reverseOrder());
//사용자 정의 정렬(오름 차순)
arr1.sort(new Comparator<Long>() {
@Override
public int compare(Long o1, Long o2) {
// TODO Auto-generated method stub
if(o1<o2)
return -1;
else return 1;
}
});
//사용자 정의 정렬(내림차순)
Collections.sort(arr1, new Comparator<Long>() {
@Override
public int compare(Long o1, Long o2) {
// TODO Auto-generated method stub
if(o1>o2) return -1;
else return -1;
}
});
for(int i=0;i<n;i++)System.out.print(arr1.get(i)+" ");
}
}
'코테 공부' 카테고리의 다른 글
[SQL]즐겨찾기가 가장 많은 식당 정보 출력하기(☆☆) (0) | 2022.10.21 |
---|---|
[SQL]오랜 기간 보호한 동물, 있었는데요 없었습니다. (프로그래머스)☆☆☆☆ (0) | 2022.10.18 |
순회강연(백준 2109번),자바 (0) | 2022.07.07 |
예산(백준 1512번),자바 (0) | 2022.07.06 |
맥주 마시면서 걸어가기(백준 9205번), 자바(☆☆) (0) | 2022.07.02 |