백엔드개발자/알고리즘관련
숫자만 추출
보혀니
2021. 10. 15. 12:31
문자와 숫자가 섞여있는 문자열이 주어지면 그 중 숫자만 추출하여 순서대로 자연수를 만듭니다.
만약 "0wroi1fjlw2jif3"에서 숫자만 추출하면 0, 1, 2, 3 이고 이것을 자연수로 만들면 123이 됩니다.
추출하여 만들어지는 숫자는 100,000,000을 넘지 않습니다.
첫 줄에 숫자가 적힌 문자열이 주어집니다. 문자열의 길이는 100을 넘지 않습니다.
첫 줄에 자연수를 출력합니다.
import java.util.Scanner;
public class Main {
public int solution(String str) {
int answer =0;
for(char c : str.toCharArray()) {
System.out.print(c); //출력
// 아래처럼, 연산을 할 때에는 아스키코드로 연산이 된다.
if(c>=48 && c<=57) {
answer = answer *10 + (c-48);
}
}
System.out.println();
return answer;
}
public int solution2(String str) {
String answer = "";
for(char x : str.toCharArray()) {
if(Character.isDigit(x)) {
answer +=x;
}
}
return Integer.parseInt(answer);
}
// 리턴타입 String이면 결과가 0237이 나오기 때문에
// 리턴타입 int로 바꾸고 리턴할 answer는 int형으로 바꿔주기
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("0fwjklr23fjlw7"));
System.out.println(T.solution2("0fwjklr23fjlw7"));
}
}
결과
char 배열을 출력할 때에는
문자열이 문자로 잘 나왔는데
왜 if조건문에서 아스키코드가 되어버린건지 의문이었음
연산할 때에는 아스키코드로 연산이 된다고 함