Algorithm/문제

9. 숫자만 추출

챛채 2023. 5. 23. 16:14

 

1. 아스키코드

answer값은 누적이 되어야하므로 answer = 0 0으로 초기화 하고 숫자0~9까지 아스키코드값은 48~57이므로 x>=48 && x<= 57이 참이면 answer = answer*10 +(x-48)을 해준다.

0 = 0 * 10 + 0

1 = 0 * 10 + 1

12 = 1 * 10 + 2

120 = 12 * 10 + 0

1205 = 120 * 10 + 5

 

import java.util.ArrayList;
import java.util.Scanner;

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

       for (char x : s.toCharArray()) {
           if(x>=48 && x<= 57) answer=answer*10+(x-48); //x-48을 해야 실제 숫자나옴 (0=48-48)

       }
        return answer;
   }
   public static void main(String[] args){
       Main T = new Main();
       Scanner kb = new Scanner(System.in);
       String str = kb.nextLine();
       System.out.println(T.solution(str));
   }
}

 

2. isDigit()

import java.util.ArrayList;
import java.util.Scanner;

public class Main {
   public int solution(String s) { //맨처음 0을 제외해야하니까 정수로 받아야함
       String answer = "";

       for (char x : s.toCharArray()) {
           if(Character.isDigit(x)) //숫자인가
               answer+=x; //string으로 x누적


       }
        return Integer.parseInt(answer);
   }
   public static void main(String[] args){
       Main T = new Main();
       Scanner kb = new Scanner(System.in);
       String str = kb.nextLine();
       System.out.println(T.solution(str));
   }
}

String을 parsent로 변경