(String)숫자만 추출/가장 짧은 문자

-·2023년 12월 8일
0

Inflearn-basicTest

목록 보기
5/27

숫자만 추출

아스킷 코드

  • 'ch'가 연산자를 만나면 아스킷코드 넘버(int)로 변환된다.

Character.isDigit(ch)

ch가 숫자면 true 아니면 false

✏️ 문제

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

만약 “tge0a1h205er”에서 숫자만 추출하면 0, 1, 2, 0, 5이고 이것을 자연수를 만들면 
1205이 됩니다. 추출하여 만들어지는 자연수는 100,000,000을 넘지 않습니다.

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

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

🔍아스킷 코드 이용

public int solution(String str){
	int answer = 0;;
    for(int i = 0; i < str.length(); i++){
    	
        if(str.charAt(i) <= '9' && str.charAt(i) >= '0') 
        answer = answer * 10 + (str.charAt(i) - '0');
        					// 아스킷정수 - 아스킷정수 = int 
    }
    
    return answer;
}

🔍isDigit이용

public int solution(String str){
	String answer = "";
    for(char ch : str.toCharArray()){
    	if(Character.isDigit(ch) answer += ch
    }
    
    return Integer.parseInt(answer);
    //-> int형태로 변하면서, 맨앞이 0이었다면 사라짐.
    //-> double은 0212 -> 212.0 반환
}

가장 짧은 문자

Math.min / Math.max

Math.min(int a, int b) 두 수를 비교하여 작은 수를 리턴
Math.max(int a, int b) 두 수를 비교하여 큰 수를 리턴

✏️문제

* 설명
한 개의 문자열 s와 문자 t가 주어지면 문자열 s의 각 문자가 문자 t와 떨어진 최소거리를
출력하는 프로그램을 작성하세요.

* 입력
첫 번째 줄에 문자열 s와 문자 t가 주어진다. 문자열과 문자는 소문자로만 주어집니다.
문자열의 길이는 100을 넘지 않는다.

* 출력
첫 번째 줄에 각 문자열 s의 각 문자가 문자 t와 떨어진 거리를 순서대로 출력한다.

🔍풀이

public void solution(String str, char ch){
	int[] answer = new int[str.length()];
    int distance = 1000;
    for(int i = 0; i < str.length(); i++){
    	if(str.charAt(i) == ch) distance = 0;
        else distance++;
        answer[i] = distance;
    }
    distance = 1000;
    for(int i = str.length() - 1; i >= 0; i--){
    	if(str.charAt(i) == ch) distance = 0;
        else{ 
        	distance++;
        	answer[i] = Math.min(answer[i], distance);
        }
    }
    //참고:int배열[]은 처음 만들 때부터 방의 크기를 명시해야 한다.
}
profile
신입 개발자의 개인 공부 공간입니다

0개의 댓글