[백준] 2870 수학숙제

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

#2870: 수학 숙제

종이에서 찾은 숫자의 수는 M입니다. 출력은 M 줄로 구성되어야 합니다. 각 줄은 종이에 있는 숫자를 출력해야 합니다. 이 경우 내림차순이 아닌 순서로 출력되어야 합니다. 내림차순이 아닌 순서는 내림차순

www.acmicpc.net

해결 자체는 어렵지 않았다. 정규식으로 입력을 전처리하여 숫자만 선택할 수 있기 때문입니다. 그리고 배열이나 리스트와 같은 선형 구조의 데이터 타입으로 숫자를 저장한 후 정렬만 하면 되는 문제였다.

그런데 제출할 때마다 NumberFormatException이 계속 뜨길래 웹을 뒤져보니 데이터 타입을 정수로 취급하면 안된다는 걸 알았다. 물론 입력 조건을 보면 한 줄당 최대 100자로 지정되어 있어 이미 정수 형태의 숫자만 처리할 수 없는 범위였다. BigDecimal 라이브러리를 사용하여 약간의 수정만으로 즉시 해결할 수 있었습니다.


문제와 입력 및 출력


[백준] 2870 수학숙제 1


암호

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);
배열목록 목록 = 새 ArrayList();
문자열 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();
돌려 주다;
}
}