Java 알고리즘

[Java | 알고리즘] 09. 숫자만 추출 / 정답 및 해설

엘라 ELLA 2023. 1. 19. 13:00
728x90
반응형

설명

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

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

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

 

입력

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

 

출력

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

 

예시 입력 1 

g0en2T0s8eSoft

 

예시 출력 1

208

 


 

정답 및 해설

 

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        //입력값을 받기 위한 스캐너
        Scanner sc = new Scanner(System.in);
        //받은 값을 str에 저장
        String str = sc.next();
        //정답을 출력할 answer
        String answer = "";

        //입력받은 값에 숫자를 제외한 전부 다 삭제
        //정규식에서 ^는 부정을 뜻해서 ^0-9는 0부터 9까지가 아닌걸 의미
        str = new StringBuilder(str).toString().replaceAll("[^0-9]", "");

        //str에 첫번째가 0이 아니면 answer에 첫번째 글자를 더함
        if (str.charAt(0) != '0'){
            answer += str.charAt(0);
        }

        //위에서 0번째는 걸렀으므로 첫번째부터 마지막까지 반복문을 통해 answer에 더함
        for (int i = 1; i<str.length(); i++){
            answer += str.charAt(i);
        }
        //정답 출력
        System.out.println(answer);
    }
}

 

정답 및 해설2

 

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        //입력값을 받기 위한 스캐너
        Scanner sc = new Scanner(System.in);
        //받은 값을 str에 저장
        String str = sc.next();
        //정답을 출력할 answer
        String answer = "";

        //Character.isDigit를 이용해서 숫자만 answer에 누적시킴
        for (char x : str.toCharArray()) {
            if (Character.isDigit(x)) {
                answer += x;
            }
        }
        //첫글자가 0이면 없애기 위해서 Integer.parseInt를 이용해 형변환
        System.out.println(Integer.parseInt(answer));
    }
}

 

 

 


 

 

게시글이 도움이 되었다면

[로그인]이 필요 없는 ❤ 눌러주세요:)

반응형