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(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배열[]은 처음 만들 때부터 방의 크기를 명시해야 한다.
}