Coding Test Inflearn

[String] 숫자만 추출

coding-orange 2024. 1. 29. 15:45
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