728x90

 

숫자만 추출

 

설명

문자와 숫자가 섞여있는 문자열이 주어지면 그 중 숫자만 추출하여 그 순서대로 자연수를 만듭니다.

만약 “tge0a1h205er”에서 숫자만 추출하면 0, 1, 2, 0, 5이고 이것을 자연수를 만들면 1205이 됩니다.

추출하여 만들어지는 자연수는 100,000,000을 넘지 않습니다.

 

 

입력

첫 줄에 숫자가 섞인 문자열이 주어집니다. 문자열의 길이는 100을 넘지 않습니다.

 

 

출력

첫 줄에 자연수를 출력합니다.

 

 

 

예시 입력

g0en2T0s8eSoft

 

 

 

예시 출력

208

 

 

 

풀이

풀이 방법은 2가지이다.

 

다음은 첫 번째 풀이이다. char 도 결국 정수형임을 이용했다.

1. 입력받은 문자열을 문자로 바꾸어 반복문을 돈다. 

2. 해당 문자가 48(즉, char '0')보다 크고, 57(즉, char '9')보다 작으면 정답 값을 누적한다.

 

다음은 두 번째 풀이이다. Character 클래스의 isDigit()과 StringBuilder를 이용했다.

1. 입력받은 문자열을 문자로 바꾸어 반복문을 돈다. 이 때 String 클래스의 toCharArray()를 이용한다.

2. 해당 문자가 숫자이면 StringBuilder로 해당 문자를 추가한다. 문자가 숫자인지 검증하는 것은 Character 클래스의 isDigit()을 이용했다.

3. 정답이 0123 과 같이 나온 경우, 앞의 0을 제거하기 위해 Integer 클래스의 parseInt() 를 이용한다.

 

 

 

코드

첫 번째 풀이

package solve;
import java.util.Scanner;
public class Main_1_9 {
// char 도 정수형이다
public int solution(String str) {
int answer = 0;
for(char x : str.toCharArray()) {
if (x >= 48 && x <= 57) { // char 에서 x >= 48 && x <= 57 이면 숫자이다, 48 => 0, 57 => 9
answer = answer * 10 + (x-48); // 숫자이면 answer 에 값을 누적한다
}
}
return answer;
}
public static void main(String[] args) {
Main_1_9 T = new Main_1_9();
Scanner scanner = new Scanner(System.in);
String str = scanner.next();
System.out.println(T.solution(str));
}
}

 

 

두 번째 풀이

package solve;
import java.util.Scanner;
public class Main_1_9_my {
public int solution(String str) {
int answer = 0;
StringBuilder sb = new StringBuilder();
char [] cArr = str.toCharArray();
for(char c : cArr) {
if (Character.isDigit(c)) {
sb.append(c);
}
}
answer = Integer.parseInt(sb.toString()); // 0208 -> 208
return answer;
}
public static void main(String[] args) {
Main_1_9_my T = new Main_1_9_my();
Scanner scanner = new Scanner(System.in);
String str = scanner.next();
System.out.println(T.solution(str));
}
}
728x90

'Coding Test Inflearn' 카테고리의 다른 글

[String] 문자열 압축  (2) 2024.01.30
[String] 가장 짧은 문자거리  (2) 2024.01.30
[String] 유효한 팰린드롬  (0) 2024.01.28
[String] 회문 문자열  (2) 2024.01.28
[String] 중복 문자 제거  (0) 2024.01.27