[ Java 코딩 테스트 ] 숫자만 추출

한대희·2024년 1월 22일
0

Java 코딩 테스트

목록 보기
10/11

문제

  • 문자와 숫자가 섞여 있는 문자열이 주어지면 그 중 숫자만 추출하여 그 순서대로 자연수를 만든다.
  • 만약 asdf0123sdf에서 숫자만 추출하면 0,1,2,3이 되고 이것을 자연수로 만들면 123이 된다.
  • 숫자의 첫번째가 0이면 0을 없애 줘야 하는 것.
  • 추출하여 만들어지는 자연수는 100,000,000을 넘지 않는다.

입력

  • 첫 줄에 숫자가 섞인 문자열이 주어진다.
  • 문자열의 길이는 100을 넘지 않는다.

출력

  • 첫 줄에 자연수를 출력한다.

예시

//입력
as0d213RT@#$

//출력
213

코드

  • 아스키 코드 사용
class Main {
  // 숫자와 문자가 섞인 String을 전달 받아
  // 아스키 넘버를 통해 숫자인지 확인하여 숫자면
     answer에 추가하여 리턴
  // 예를들어 전달 받은 String의 첫번째 숫자가 0이면
     x가 48이 되니까 answer도 0이 들어가고
     두번째 숫자가 1이면 x는 49니까 answer에는 1이 들어가게되고 
     세번째 숫자가 2면 이제 기존에 answer에 1이 들어가 있으니까
     1*10 + (50-48) 해서 answer에 12가 들어가게 된다.
     즉 10을 곱해서 1의 자리를 0으로 만들고 숫자를 추가해 나가는 것.
  public static int solution(String str) {
       int answer = 0;
       for (char x : str.toCharArray()) {
           if (x >=48 && x<=57) {
               answer = answer*10 + (x-48);
           }
       }
       return answer;

   };

 public static void main(String[] args) {
     // 스캐너 객체를 생성 한다.
     Scanner input = new Scanner(System.in);
     // 문자를 입력 받아 solution 메서드에 전달
     String str = input.next();
     System.out.println(solution(str));

 }
}
  • Character.isDigit() 사용
class Main {

// Character.isDigit을 사용하여 숫자인지 확인하여 숫자를
   answer에 담는다.
// 이렇게 하면 첫 숫자가 0이어도 0이 담기므로 마지막에 
   int형으로 변환하여 첫번째 숫자가 0인 경우 0을 제거한다.
    public static int solution(String str) {
        String answer ="";
        for (char x : str.toCharArray()) {
            if (Character.isDigit(x)) {
                answer += x;
            }
        }
        return Integer.parseInt(answer);

    };

    public static void main(String[] args) {
        // 스캐너 객체를 생성 한다.
        Scanner input = new Scanner(System.in);
        // 문자를 입력 받아 solution 메서드에 전달
        String str = input.next();
        System.out.println(solution(str));

    }
}

사용한 메서드

Character.isDigit ( )

  • 해당 메서드를 사용하면 전달한 char가 숫자인지 아닌지 확인할 수 있다.
System.out.println(Character.isDigit('a')); // false
System.out.println(Character.isDigit('0')); // true

Integer.parseInt ()

  • 해당 메서드를 사용ㅎ면 String타입의 문자열을 int타입으로 변환시켜 준다.
String strNum1 = new String("1234");
String strNum2 = new String("4321");

int num1 = Integer.parseInt(strNum1);
int num2 = Integer.parseInt(strNum2);

System.out.println(num1 + num2); // 12344321이 아닌 5555가 출력됨
profile
개발 블로그

0개의 댓글