ezhoon

[인프런] 01-09 숫자만 추출 본문

[Java] 인프런 문제풀이/Stirng(문자열)

[인프런] 01-09 숫자만 추출

ezhoon 2022. 1. 19. 23:51

문제


  1. 문자와 숫자가 섞여있는 문자열이 주어진다.
  2. 숫자만 추출한 뒤 이것을 자연수로 만들어서 출력한다.

입력 예시

 

이해


  • 문자와 숫자가 섞여있는 문자열 하나를 입력 후 숫자만 추출한다.
  • 숫자를 추출 할 때 0, 1, 2, 3 으로 추출 되면 앞에 0을 제외하고 123으로 출력되게 한다.
    • 추출해서 나온 값에 Integer.parseInt() 해주면 int 형변환 되니 자연스럽게 앞자리 0은 없어질 것이다.

 

 

⚠️ 주의사항


  • 숫자와 문자 섞여있는 문자열 입력
  • 숫자만 추출해서 출력하되 자연수로 만들어서 출력한다.

 

문제풀이


import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Java01_09 {

    public String solution(String str){

        StringBuilder sb = new StringBuilder();
        String answer = "";

        for (int i = 0; i < str.length(); i++) {
           if(str.charAt(i) >= 48 && str.charAt(i) <= 57) answer = answer + str.charAt(i); // sb.append(str.charAt(i));
            
        }
        sb.append(Integer.parseInt(answer));

        return sb.toString();
    }

    public static void main(String[] args) throws IOException {

        Java01_09 T = new Java01_09();

        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        String str = br.readLine();

        System.out.println(T.solution(str));
    }
}

 

아스키 코드에서 숫자는 48 ~ 57이므로 이 사이의 값인 경우 answer에 누적시키는 방법입니다.

이 방법 말고도 한 가지 더 있습니다.

if(Character.isDigit(str.charAt(i))) answer = answer + str.charAt(i); // isDigit() 괄호 안의 문자가 숫자인지 판별

 

위와 같은 방법으로 하면 아스키코드 관련해서 찾아 볼 필요도 없고 가독성이 좀 더 좋아집니다.


출력화면

Comments