기존 코드는 integer를 사용했기때문에 자꾸 런타임 에러가 떳다.
반례를 생각해보니 숫자가 100자리 이상 들어올 경우를 생각해야한다.
그래서 BigInteger를 통해 선언해야한다.
처음 코드는 다음과 같았다.
import java.io.*;
import java.util.*;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int M = Integer.parseInt(br.readLine());
List<Integer> answer = new ArrayList<>();
for (int i = 0; i < M; i++) {
String temp = br.readLine();
StringBuilder sb = new StringBuilder();
for (int j = 0; j < temp.length(); j++) {
char a = temp.charAt(j);
if (Character.isDigit(a)) {
sb.append(a);
} else {
if (sb.length() > 0) {
int number = Integer.parseInt(sb.toString());
answer.add(number);
sb = new StringBuilder();
}
}
}
// 끝에 숫자가 있을 경우 마지막 숫자 추가
if (sb.length() > 0) {
int number = Integer.parseInt(sb.toString());
answer.add(number);
}
}
Collections.sort(answer);
for (int num : answer) {
System.out.println(num);
}
}
}
이후 BigInteger를 사용한 코드는 아래와 같다.
import java.io.*;
import java.math.BigInteger;
import java.util.*;
/* 예시
01bond
02james007
03bond
04austinpowers000
*/
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int M = Integer.parseInt(br.readLine());
List<BigInteger> answer = new ArrayList<BigInteger>();
for (int i = 0; i < M; i++) {// 여기서 하나씩 뽑아서 숫자 배열에 넣어야한다.
String temp = br.readLine();
//Character.isDigit 이라는 함수사용 : 이게 숫자인지 아닌지 판별하는 함수임
StringBuilder sb = new StringBuilder();
for(int j =0; j<temp.length(); j++){
char a = temp.charAt(j);
if(Character.isDigit(a)){
sb.append(a);
}else {
if(sb.length()>0){
answer.add(new BigInteger(sb.toString()));
sb = new StringBuilder();
}
}
}
if(sb.length()>0){
answer.add(new BigInteger(sb.toString()));
}
}
Collections.sort(answer);
for(BigInteger num : answer){
System.out.println(num);
}
}
}
'알고리즘' 카테고리의 다른 글
프로그래머스 - 모음사전(java) (0) | 2024.10.09 |
---|---|
프로그래머스 _ 소수찾기 (JAVA) (0) | 2024.09.03 |
백준_벽부수고 이동하기(JAVA) (0) | 2024.05.15 |
백준_소수의 연속합(JAVA) (2) | 2024.02.28 |
백준_암호만들기(JAVA) (0) | 2024.02.21 |