numberSearch

이용만·2023년 3월 30일

문제
문자열을 입력받아 문자열에서 숫자를 모두 찾아 더한 뒤에 해당 값을 (숫자와 공백을 제외한 나머지) 문자열의 길이로 나눈 값을 정수로 반올림하여 리턴해야 합니다.

입출력 예시

int output = numberSearch("Hello6 ");
System.out.println(output); // --> 1
output = numberSearch("Hello6 9World 2,");
System.out.println(output); // --> 2
output = numberSearch("Hello6 9World 2, Nic8e D7ay!");
System.out.println(output); // --> 2
public class Solution { 
	public int numberSearch(String str) {
		//찾아야 하는 숫자를 문자열로 모두 선언합니다.
    String digits = "0123456789";

		//입력된 문자열이 공백이라면 0을 리턴합니다.
    if(str.length() == 0) return 0;

		//숫자를 카운트할 변수와, 숫자를 제외한 문자열을 저장할 변수를 선언합니다.
    double count = 0;
    String newStr = "";

		//문자열을 순회합니다.
    for(int i=0; i<str.length(); i++){
		//digits의 값에서 str[i]의 값이 포함되어 있다면 (indefxOf는 값이 존재하면 해당 인덱스를, 없다면 -1을 리턴합니다)
      if(digits.indexOf(str.charAt(i)) != -1){
        //찾은 숫자를 모두 더해줍니다.
        count = count + Character.getNumericValue(str.charAt(i));
        //존재하지 않고, 공백이 아니라면
      }else if(str.charAt(i) != ' '){
        //해당 문자열을 에 더해줍니다.
        newStr = newStr + str.charAt(i);
      }		
    }    
		//결과를 계산합니다. 계산된 숫자를 문자열의 길이로 나눈 이후,
    double result = count / newStr.length();

		//Math.round를 활용하여 소수점으로부터 반올림하여 리턴합니다.
    return (int)Math.round(result);
  } 
}
profile
성장하는 개발자가 되고자 합니다.

0개의 댓글