백준 1744 수 묶기

veloger·2023년 1월 29일
0

https://www.acmicpc.net/problem/1744


package test;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.ArrayDeque;
import java.util.Collections;
import java.util.PriorityQueue;
import java.util.Queue;

public class BaekJoon1744_P203_Q34 {

	public static void main(String[] args) throws NumberFormatException, IOException {
		// TODO Auto-generated method stub
		BufferedReader br =new BufferedReader(new InputStreamReader(System.in));
		BufferedWriter bw =new BufferedWriter(new OutputStreamWriter(System.out));
		
		long sum=0;
		int size = Integer.parseInt(br.readLine());
		PriorityQueue<Integer> posQu =new PriorityQueue<>(Collections.reverseOrder());
		PriorityQueue<Integer> negQu =new PriorityQueue<>();
		Queue<Integer> qu =new ArrayDeque<>();
		
		for(int i=0;i<size;i++) {
			int num=Integer.parseInt(br.readLine());
			if(num >1) posQu.add(num); 
			else if(num== 1) qu.add(num);
			else negQu.add(num);
		}
		
		
		while(posQu.size()>1) {
			int first=posQu.poll();
			int sec=posQu.poll();
			
			int mul=first*sec;
			qu.add(mul);
		}
		if(posQu.size()==1) qu.add(posQu.poll());
		
		while(negQu.size()>1) {
			int first=negQu.poll();
			int sec=negQu.poll();
			
			int mul=first*sec;
			qu.add(mul);
		}
		if(negQu.size()==1) qu.add(negQu.poll());
		
		while(qu.size()>0) {
			if(sum>=2147483647) {
				sum=2147483647;
				break;
			}
			sum += qu.poll();
		}
		bw.write(sum+"");
		bw.flush();
	}

}

0개의 댓글