알고리즘
[BOJ] 2870번 : 수학숙제 (JAVA)
애용쓰
2023. 1. 18. 19:52
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