CS/자료구조&알고리즘
[백준] 2870번: 수학문제
봄의 개발자
2024. 1. 24. 10:25
728x90
반응형
풀이 방법
- 정규식을 통해 숫자를 걸러낸다.
- 숫자가 아닌 문자는 " "으로 바꾼다.
- 빈칸을 제거한다.
이 과정에서 split(" "), isBlank()를 사용했는데 ...
먼저 공백을 기준으로 문자열을 나누기 위해 split()을 사용했다. 내가 예상한 결과는 숫자만 배열에 저장되는 것인데 예상치 못하게 빈 문자("")도 같이 저장되었다. 그래서 isBlank를 사용해서 추가 검증을 해주었다. - 숫자만 골라내 리스트에 저장하고 이를 정렬한다.
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.math.BigInteger;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int n = Integer.parseInt(br.readLine());
List<BigInteger> arr = new ArrayList<>();
for (int i = 0; i < n; i++) {
String replaced = br.readLine().replaceAll("[^0-9]", " ");
String[] split = replaced.split(" ");
for (int j = 0; j < split.length; j++) {
if (!split[j].isBlank())
arr.add(new BigInteger(split[j]));
}
}
Collections.sort(arr);
for (BigInteger i : arr) {
System.out.println(i);
}
}
}
주의 사항
- int (32 비트)
- 최소값: -2,147,483,648
- 최대값: 2,147,483,647
- 총 자릿수: 약 10자리
- long (64 비트)
- 최소값: -9,223,372,036,854,775,808
- 최대값: 9,223,372,036,854,775,807
- 총 자릿수: 약 19자리
- BigInteger 클래스는 가변 정밀도를 가지므로 이론적으로는 제한이 없다.
- 100자리 숫자가 입력으로 들어오기 때문에 int(약 10자리), long(약 19자리)으로 표현할 수 없기 때문에 BigInteger 타입을 사용해야한다.
728x90
반응형