본문 바로가기
자바 알고리즘

09. 숫자만 추출

by watergrace2u 2022. 4. 11.
반응형
SMALL
자바 알고리즘 인프런 강의

# 방법 1 : 아스키넘버 사용


- 문자 숫자 ‘0’ ~ ‘9’ 의 아스키넘버: 48~57
1. 문자열을 문자배열로 바꾼다.
2. 각 문자를 하나씩 검사하며, 문자숫자이면(즉, 아스키넘버가 48~57에 해당하면) 골라내서 연산한다.
3. answer = answer*10 + (x-48) <<==== 공식 잘 기억해두기!!!

import java.util.Scanner;
  
public class Main {
  
  public int solution(String str){
    int answer = 0;
    // 아스키넘버를 사용할 것이므로, 일단 문자열을 문자배열로 바꾸기
    for(char x:str.toCharArray()){
    	// 각 문자의 아스키넘버가 48~57(문자숫자 아스키넘버) 사이라면,
        // (x-48)로 숫자로 바꾸어준 뒤, 연산.
      if(x>=48 && x<=57) answer=answer*10 + (x-48);
    }
    return answer;
  }
  
  public static void main(String[] args){
    Main T = new Main();
    Scanner kb=new Scanner(System.in);
    String str = kb.next();
    System.out.println(T.solution(str));
  }
}


# 방법 2 : Character.isDigit() 함수 이용


- Character.isDigit() 함수 이용
- 마지막에 Integer.parseInt() 함수 이용하여 문자열을 정수로 변환해서 반환해주기!

import java.util.Scanner;
  
public class Main {
  
  public int solution(String str){
    String answer = "";
    
    for(char x:str.toCharArray()){
      // 숫자라면 문자열에 추가하기
    	if(Character.isDigit(x)) answer+=x;
    }
    // 문자열로 반환하면, 0208같은 경우 그대로 출력되므로,
    // 숫자로 변환하여 208로 출력되게 한다.
    return Integer.parseInt(answer);
    
  }
  
  public static void main(String[] args){
    Main T = new Main();
    Scanner kb=new Scanner(System.in);
    String str = kb.next();
    System.out.println(T.solution(str));
  }
}
반응형
LIST

'자바 알고리즘' 카테고리의 다른 글

11. 문자열 압축  (0) 2022.07.06
10. 가장 짧은 문자거리  (0) 2022.07.05
08. 팰린드롬 (replaceAll 정규식 이용)  (0) 2022.04.11
07. 회문 문자열  (0) 2022.04.08
06. 중복 문자 제거  (0) 2022.04.08

댓글