본문 바로가기

Algorithm/Inflearn

[Inflearn] 자바 알고리즘 문제풀이 #01-09 9. 숫자만 추출

문제

설명

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

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

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

 

입력 

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

 

출력 

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

 

 

 

 

내 풀이
import java.util.Scanner;

public class Main1_9 {
    public int Solution(String s) {
        int answer = 0;
        s = s.toUpperCase().replaceAll("[A-Z]", "");
        answer = Integer.parseInt(s);
        return answer;
    }

    public static void main(String[] args) {
        Main1_9 T = new Main1_9();
        Scanner sc = new Scanner(System.in);
        String str = sc.next();
        System.out.println(T.Solution(str));
    }
}

8. 유효한 팰린드롬 문제에서 나왔던 replaceAll() 함수를 기억해서 적용했다.

https://rookie-programmer.tistory.com/21

 

[JAVA] 자바 replace와 replaceAll 차이점 사용법

설명 replace는 문자 -> 문자 혹은 문자열 -> 문자열로 치환해주는 메소드이고 replaceAll은 replace 역할도 하지만, "정규식"을 사용해서 좀 더 효율적으로 문자열을 바꿀 수 있다. 예시 public class example.

rookie-programmer.tistory.com

 

 

 

선생님 풀이
import java.util.Scanner;

public class Main1_9 {
    public int Solution(String s) {
        String answer = "";
        for(char x : s.toCharArray()) {
            if(Character.isDigit(x)) answer += x;
        }
        return Integer.parseInt(answer);
    }

    public static void main(String[] args) {
        Main1_9 T = new Main1_9();
        Scanner sc = new Scanner(System.in);
        String str = sc.next();
        System.out.println(T.Solution(str));
    }
}

 

 

 

결과

 

 

 

알게된 점

1. Character.isDigit()

https://rookie-programmer.tistory.com/16

 

[JAVA] 자바 Character.메소드 정리

설명 특정 문자가 대문자인지, 소문자인지, 숫자인지, 영문자인지 확인하거나 (참이면 true, 거짓이면 false 반환) 대문자 혹은 소문자로 변환할 때 사용합니다. 예시 Character.isUpperCase() : 특정 문자

rookie-programmer.tistory.com