728x90
https://www.acmicpc.net/problem/1744
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int cnt = Integer.parseInt(br.readLine().strip());
List<Integer> list = new ArrayList<>();
for (int i=0; i<cnt; i++)
list.add(Integer.parseInt(br.readLine().strip()));
//개수가 1일 때 처리
if (cnt == 1){
System.out.println(list.get(0));
return;
}
Collections.sort(list);
int sum = 0;
//[음의 정수 + 0] 처리
for (int i=0; i<cnt; i++) {
if (i >= cnt-1)
break;
int a = list.get(i);
int b = list.get(i+1);
if (a > 0 || b > 0)
break;
sum += a*b;
list.set(i, 0); list.set(i+1, 0);
i++;
}
//양의 정수 처리
for (int i=list.size()-1; i>=0; i--) {
if (i < 1)
break;
int a = list.get(i);
int b = list.get(i-1);
if (a <=1 || b <= 1)
break;
sum += a*b;
list.set(i, 0); list.set(i-1, 0);
i--;
}
for (Integer i: list)
sum += i;
System.out.println(sum);
}
}
- 입력 개수가 1일 때는 그대로 반환하도록 해줌
- 오름차순으로 정렬해준다
- 음의 정수와 0일 때 처리를 해준다
- 둘 다 음수거나 0인 경우 곱해서 sum에 더해준다
- 나중에 남은 값들을 더해줄거라서 곱한 값들의 자리에는 0을 넣어준다
- 자연수일 때 처리를 해준다
- 1인 경우에는 곱하면 안됨
- 그러므로 둘 다 1이상인 경우 곱해서 sum에 더해준다
- 하나라도 1인 게 포함되어 있으면 그냥 break한다
- sum에 곱해진 값들과 나머지 값들을 긁어모아서 print 해준다
어우 너무 힘들었따
728x90
'알고리즘 > 백준' 카테고리의 다른 글
[Java] 백준 2109 순회강연 - 골드3 (0) | 2023.07.14 |
---|---|
[Java] 백준 13975 파일 합치기 3 - 골드4 (0) | 2023.07.14 |
[Java] 백준 1715 카드 정렬하기 - 골드4 (0) | 2023.07.14 |
[Java] 백준 1339 단어 수학 - 골드4 (0) | 2023.07.14 |
[Java] 백준 1083 소트 - 골드5 (1) | 2023.07.13 |