인프런 코딩테스트 강의 메모 - 숫자만 추출
public class Main {
public int solution(String str) {
str=str.replaceAll("[^0-9]","");
int num;
num=Integer.parseInt(str);
return num;
}
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));
}
}
package 숫자만추출;
import java.util.Scanner;
public class Main {
public int solution(String str) {
char[] chars = str.toCharArray();
String answer = "";
for (char ch : chars) {
if (Character.isDigit(ch)) {
answer += String.valueOf(ch);
}
}
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));
}
}
입력값 :g0en2T0s8eSoft
출력값:208
문자열을 입력받아 숫자만 출력하는 문제였다.
숫자를 필터링하는 것에 두가지 방법을 고민했다.
1. for문을 돌려 Chararcter.isDigit으로 숫자인지 판단하는것
2.정규식을 써서 숫자가 아닌것들을 모두 없애버리는것
개인적으로 정규식이 더 나은 것같다.
for문,Character.isDigit
1,문자열로 입력값을 받는다.
2.문자열을 문자배열로 바꾼다.
3.Character.isDigit으로 숫자인지 아닌지 판단하고 비어있는 문자열 answer에 담아준다.
4.answer을 int로 형변환한다.
정규식
1.문자열로 입력값을 받는다.
2.문자열중 숫자가 아닌것은 ""로 바꾼다.
3.숫자만 남은 문자열을 Integer로 형변환한다.(형변환과정에서 028->28, 00034->34식으로 의미없는 앞에 0은 사라진다.)
4.출력
//인프런 코드
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));
}
}
인프런 코드는 조금 다른 방법이있다면
if(x>=48 && x<=57) answer=answer*10+(x-48);
아스키코드로 숫자인지 판단하는것인데 answer에 담는 방식이 독특했다.
나는 그냥 문자+문자로 더 한후 int로 형변환한거였지만 인프런강의에서는
재귀함수같이 계속 10을 곱하며 이전 값의 자릿수를 올려주며 더하는 방식이였다.
예를 들어 123이면
0*10+1=1
1*10+2=12
12*10+3=123
과 같은 방식으로 숫자를 차곡차곡 쌓아갔다.
자바(Java) 알고리즘 문제풀이 : 코딩테스트 대비 - 인프런 | 강의
자바(Java)로 코딩테스트를 준비하시는 분을 위한 강좌입니다. 코딩테스트에서 가장 많이 출제되는 Top 10 Topic을 다루고 있습니다. 주제와 연동하여 기초문제부터 중급문제까지 단계적으로 구성
www.inflearn.com