algorithm

숫자만 추출

juuuuuuun 2024. 4. 28. 19:19

설명

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

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

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

 

입력

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

 

출력

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

 

예시 입력 1 

g0en2T0s8eSoft

 

예시 출력 1

208

 

소스코드 1

import java.util.Scanner;

public class Main {
    public static String solution(String str) {
        String answer = "";
        StringBuilder ans = new StringBuilder();
        for (int i = 0; i < str.length(); i++) { //str에서 숫자만 뽑아내 ans에 추가한다.
            if ('0' <= str.charAt(i) && str.charAt(i) <= '9') {
                ans.append(str.charAt(i));
            }
        }
        while (ans.charAt(0) == '0') { // 맨 앞 자리수가 0이면 계속 삭제한다.
            ans.deleteCharAt(0);
        }
        answer = ans.toString(); //String 타입으로 변환시켜 answer에 저장한다.
        return answer;
    }

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String str = sc.nextLine();
        System.out.println(solution(str));

    }
}

 

소스코드 2

import java.util.Scanner;

public class Main {
    public static int solution(String str) {
        int answer = 0;

		
        for (int i = 0; i < str.length(); i++) {
            if ('0' <= str.charAt(i) && str.charAt(i) <= '9') {
            	//이 식으로 맨 앞 숫자가 0이라면 없애는 계산이 가능해진다.
                answer = answer * 10 + (str.charAt(i) - '0');
            }
        }

        return answer;
    }

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String str = sc.nextLine();
        System.out.println(solution(str));

    }
}