728x90
반응형
▷ 문제
문자와 숫자가 섞여있는 문자열이 주어지면 그 중 숫자만 추출하여 그 순서대로 자연수를 만듭니다.
만약 “tge0a1h205er”에서 숫자만 추출하면 0, 1, 2, 0, 5이고 이것을 자연수를 만들면 1205이 됩니다.
추출하여 만들어지는 자연수는 100,000,000을 넘지 않습니다.
* 입력
첫 줄에 숫자가 썩인 문자열이 주어집니다. 문자열의 길이는 100을 넘지 않습니다.
* 출력
첫 줄에 자연수를 출력합니다.
▷ 입력 예시
g0en2T0s8eSoft
▷ 출력 예시
208
▷ 풀이
1. replaceAll 정규식을 이용한 숫자를 제외한 문자 제외
import java.util.Scanner;
public class Main {
public int solution(String str){
int answer = 0;
str = str.toUpperCase().replaceAll("[^0-9]", "");
answer = Integer.parseInt(str);
return answer;
}
public static void main(String[] args) {
Main main = new Main();
Scanner kb = new Scanner(System.in);
String str = kb.nextLine();
System.out.println(main.solution(str));
}
}
2. Character의 isDigit로 숫자 판별
import java.util.Scanner;
public class Main {
public int solution(String str){
String answer = "";
for (char x : str.toCharArray()) {
if (Character.isDigit(x)) {
answer += x;
}
}
return Integer.parseInt(answer);
}
public static void main(String[] args) {
Main main = new Main();
Scanner kb = new Scanner(System.in);
String str = kb.nextLine();
System.out.println(main.solution(str));
}
}
3. 아스키 코드 이용
import java.util.Scanner;
public class Main {
public int solution(String str){
int answer = 0;
for (char x : str.toCharArray()) {
if (x >= 48 && x <= 57) {
answer = answer * 10 + (x-48);
}
}
return answer;
}
public static void main(String[] args) {
Main main = new Main();
Scanner kb = new Scanner(System.in);
String str = kb.nextLine();
System.out.println(main.solution(str));
}
}
▷ 핵심 포인트
1. 아스키 코드 '0'은 10진수 값 48, '9'은 57임을 이용하여 숫자임을 판별할 수 있습니다.
반응형
'Algorithm > String' 카테고리의 다른 글
[알고리즘]문자열 압축 (0) | 2021.10.11 |
---|---|
[알고리즘]가장 짧은 문자거리 (0) | 2021.10.11 |
[알고리즘]유효한 팰린드롬 - 입력 받은 문자열이 팰린드롬인지 판별하기 (0) | 2021.10.10 |
[알고리즘]회문 문자열 - 입력 받은 문자열이 회문 문자인지 판단하기 (0) | 2021.10.10 |
[알고리즘]중복문자 제거 - 입력 받은 문자열에서 중복된 문자 제거하기 (0) | 2021.10.09 |