728x90
반응형
9. 숫자만 추출
설명
문자와 숫자가 섞여있는 문자열이 주어지면 그 중 숫자만 추출하여 그 순서대로 자연수를 만듭니다.
만약 “tge0a1h205er”에서 숫자만 추출하면 0, 1, 2, 0, 5이고 이것을 자연수를 만들면 1205이 됩니다.
추출하여 만들어지는 자연수는 100,000,000을 넘지 않습니다.
입력
첫 줄에 숫자가 섞인 문자열이 주어집니다. 문자열의 길이는 100을 넘지 않습니다.
출력
첫 줄에 자연수를 출력합니다.
예시 입력 1
g0en2T0s8eSoft
예시 출력 1
208
1. 변환을 이용
2. 아스키 번호를 이용
1. 변환을 이용
(1) 반환형이 int형일 경우
문자열 확인 메서드
Chracter.isDigit(arr[i])
String to Integer 변환
int b = Integer.parseInt(a);
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-48);
}
return Integer.parseInt(answer);
}
public static void main(String[] args){
Main T=new Main();
Scanner kb=new Scanner(System.in);
String str= kb.next();
System.out.println(T.solution(str));
}
}
(2) 반환형이 String형일 경우
Integer.parseInt를 이용하지 않고, 바로 answer에 넣기
import java.util.Scanner;
public class Main {
public String solution(String str){
String answer="";
for(char x : str.toCharArray()){
if(Character.isDigit(x)) answer+=x;
}
return answer;
}
public static void main(String[] args){
Main T=new Main();
Scanner kb=new Scanner(System.in);
String str= kb.next();
System.out.println(T.solution(str));
}
}
+) 세련된 풀이
2. 아스키 번호를 이용
(1) 반환형이 int형일 경우
-> 아스키 번호가 48부터 57 사이일 경우 문자임을 이용
import java.util.Scanner;
public class Main {
public int solution(String str){
String answer="";
for(char x : str.toCharArray()){
if(x>=47 && x<=58) answer+=x-48;
}
return Integer.parseInt(answer);
}
public static void main(String[] args){
Main T=new Main();
Scanner kb=new Scanner(System.in);
String str= kb.next();
System.out.println(T.solution(str));
}
}
(2) 반환형이 String형일 경우
Integer.parseInt를 이용하지 않고, 바로 answer에 넣기
answer=answer*10+(x-48);
//각 자리수에 맞게 넣기위해
import java.util.Scanner;
public class Main {
public int solution(String str){
int answer=0;
for(char x : str.toCharArray()){
if(x>=47 && x<=58) answer=answer*10+(x-48);
}
return answer;
}
public static void main(String[] args){
Main T=new Main();
Scanner kb=new Scanner(System.in);
String str= kb.next();
System.out.println(T.solution(str));
}
}
replaceAll() 이용
import java.util.Scanner;
public class Main {
public static void main(String[] args){
Scanner in=new Scanner(System.in);
String input1 = in.next();
System.out.println(solution(input1));
}
static int solution(String str){
str=str.replaceAll("[^0-9]", "");
return Integer.parseInt(str);
}
}
import java.util.Scanner;
public class Main {
public static void main(String[] args){
Scanner in=new Scanner(System.in);
String str= in.next();
str=str.replaceAll("[A-Za-z]", "");
int answer=Integer.parseInt(str);
System.out.println(answer);
}
}
import java.util.Scanner;
public class Main {
public static void main(String[] args){
Scanner in=new Scanner(System.in);
String str= in.next();
str=str.replaceAll("[^0-9]", "");
int answer=Integer.parseInt(str);
System.out.println(answer);
}
}
728x90
반응형
'Java > Java 알고리즘 인프런' 카테고리의 다른 글
[Ch.01 - String] 11. 문자열 압축 (+ 공백 활용) (0) | 2022.05.16 |
---|---|
[Ch.01 - String] 10. 가장 짧은 문자거리 # (+ Math.min, charAt) (0) | 2022.05.16 |
[Ch.01 - String] 08. 유효한 팰린드롬 (+ replaceAll ) (0) | 2022.05.15 |
[Ch.01 - String] 07. 회문 문자열 (+ str.equalsIgnoreCase(tmp)) (0) | 2022.05.15 |
[Ch.01 - String] 06. 중복문자제거 (+ charAt, indexOf) # (0) | 2022.05.15 |