오늘보다 더 나은 내일의 나에게_

자바 알고리즘 문제 풀이 String Q09_숫자만 추출 본문

ALGORITHM/inflearn_javaAlgorithm

자바 알고리즘 문제 풀이 String Q09_숫자만 추출

chan_96 2022. 2. 2. 23:57
728x90
설명

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

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

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


입력

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


출력

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

 


예시 입력1


예시 출력

g0en2T0s8eSoft 208

 

코드

내가 입력한 코드

package String;

import java.util.Scanner;

public class Q09 {
	public int solution(String str) {
		int answer = 0;
		char[] c = str.toCharArray();
		StringBuilder sb = new StringBuilder();
		
		for (int i = 0; i < c.length; i++) {
			if(Character.isDigit(c[i])) {
				sb.append(c[i]);
			}
		}
		
		if(sb.charAt(0) == '0') {
			sb.deleteCharAt(0);
		}
		answer = Integer.parseInt(sb.toString());		
		
		return answer;
	}
	
	public static void main(String[] args) {
		Q09 T = new Q09();
		Scanner kb = new Scanner(System.in);
		String str = kb.next();
		System.out.println(T.solution(str));
	}
}

 




해설 코드

import java.util.*;
class Main {	
	public int solution(String s){
		//int answer=0;
		String answer="";
		for(char x : s.toCharArray()){
			//if(x>=48 && x<=57) answer=answer*10+(x-48);
			/*if(Character.isDigit(x)){
				answer=answer*10+ Character.getNumericValue(x);
			}*/
			if(Character.isDigit(x)) answer+=x;
		}
		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.print(T.solution(str));
	}
}

 

 

풀이 및 정리 

역시 이번문제에도 숫자를 판별해 줄 수 있는 메서드가 존재
=> Character.isDigit( ) 매개변수로 char값이 들어가고 숫자인지 판별해 true false 반환
=> Character.getNumbericValue( ) 매개변수로 char값이 들어가고 char형을 int형으로 변환

0~9까지 아스키 코드값 48부터 57까지
728x90
Comments