본문 바로가기

알고리즘

[BOJ] 2870번 : 수학숙제 (JAVA)

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

 

2870번: 수학숙제

종이에서 찾은 숫자의 개수를 M이라고 하면, 출력은 M줄로 이루어져야 한다. 각 줄에는 종이에서 찾은 숫자를 하나씩 출력해야 한다. 이때, 비내림차순으로 출력해야 한다. 비내림차순은 내림차

www.acmicpc.net

 

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.math.BigInteger;
import java.util.*;

public class Main {

    static ArrayList<BigInteger> answer;
    public static void getNum(String input){
        String s_number = "";
        for(int i=0;i<input.length();i++){
            char x = input.charAt(i);
            if(x=='0'||x=='1'||x=='2'||x=='3'||x=='4'||x=='5'||x=='6'||x=='7'||x=='8'||x=='9'){
                s_number+=x;
            }
            else{
                if(s_number!=""){
//                    int num = Integer.parseInt(s_number);
                    answer.add(new BigInteger(s_number));
                    s_number="";
                }
            }
        }
        if(s_number!=""){
            //int num = Integer.parseInt(s_number);
            answer.add(new BigInteger(s_number));
        }

    }
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringTokenizer st;
        answer = new ArrayList<>();
        int N = Integer.parseInt(br.readLine());
        for(int i=0;i<N;i++) {
            String tmp = br.readLine();
            //숫자 뽑기
            getNum(tmp);
        }
        //오름차순 정렬
        Collections.sort(answer);
        //출력
        for(BigInteger s:answer){
            System.out.println(s);
        }
    }
}

처음에 Intger.parseInt로 정수로 변환하려 했지만 런타임에러가 떴다.

숫자가 100자리가 들어올 수 있기 때문에 정수형으로 표현할 수 없다.

BigInteger로 넣어주어야한다.

 

BigInteger 정리 : https://tech-heng.tistory.com/52