https://www.acmicpc.net/problem/2870
#2870: 수학 숙제
종이에서 찾은 숫자의 수는 M입니다. 출력은 M 줄로 구성되어야 합니다. 각 줄은 종이에 있는 숫자를 출력해야 합니다. 이 경우 내림차순이 아닌 순서로 출력되어야 합니다. 내림차순이 아닌 순서는 내림차순
www.acmicpc.net
해결 자체는 어렵지 않았다. 정규식으로 입력을 전처리하여 숫자만 선택할 수 있기 때문입니다. 그리고 배열이나 리스트와 같은 선형 구조의 데이터 타입으로 숫자를 저장한 후 정렬만 하면 되는 문제였다.
그런데 제출할 때마다 NumberFormatException이 계속 뜨길래 웹을 뒤져보니 데이터 타입을 정수로 취급하면 안된다는 걸 알았다. 물론 입력 조건을 보면 한 줄당 최대 100자로 지정되어 있어 이미 정수 형태의 숫자만 처리할 수 없는 범위였다. BigDecimal 라이브러리를 사용하여 약간의 수정만으로 즉시 해결할 수 있었습니다.
문제와 입력 및 출력
![[백준] 2870 수학숙제 1](https://blog.kakaocdn.net/dn/pUSRx/btrZ7rQz1LA/V7pTJ69asNalw3h889b3KK/img.png)
암호
import java.util.Scanner;
import java.util.ArrayList;
import java.util.Collections;
import java.math.BigDecimal;
공개 클래스 메인
{
public static void main(String() args)는 NumberFormatException을 던집니다.
{
스캐너 sc = 새 스캐너(System.in);
배열목록
문자열 reg = “(^0-9)”;
int n = sc.nextInt();
문자열 buf = sc.nextLine();
for(int i=0; i
{
문자열 임시 = sc.nextLine();
String() num = temp.replaceAll(reg, “,”).split(“,”);
for(문자열 s : 숫자)
{
if(!s.equals(“”))
{
list.add(new BigDecimal(s));
}
}
}
Collections.sort(목록);
for(BigDecimal b : 리스트)
{
System.out.println(b);
}
sc.close();
돌려 주다;
}
}