[데일리코딩] 18번

박채은·2022년 12월 17일
0

코딩테스트

목록 보기
11/52

문제

[코플릿 - numberSearch]


코드 1

public class Solution {
    public static int numberSearch(String str) {
        double total=0;
        double cnt=0;
        if(str.length()==0){
            return 0;
        }
        str = str.replaceAll(" ", "");
        for(int i=0;i<str.length();i++){
            if(str.charAt(i) <='9' && str.charAt(i)>='1'){ // 숫자인 경우
                total += Character.getNumericValue(str.charAt(i));
                cnt+=1;
            }
        }
        return (int) Math.round(total/(str.length()-cnt));
    }

    public static void main(String[] args) {
        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
    }
}

✔️ 숫자를 구별하는 코드

for(int i=0;i<str.length();i++){
    if(str.charAt(i) <='9' && str.charAt(i)>='1'){ // 숫자인 경우
        total += Character.getNumericValue(str.charAt(i));
        cnt+=1;
    }
}
  • 아스키 코드를 통해서 숫자인지 구별한다.

코드 2

public class Solution {
    public static int numberSearch2(String str) {
        String num = "0123456789";
        double total=0;
        int cnt=0;
        if(str.length()==0) return 0;

        for(int i=0;i<str.length();i++){
            if(num.indexOf(str.charAt(i)) != -1){ // 숫자인 경우
                total += Character.getNumericValue(str.charAt(i));
            } else if (str.charAt(i) != ' ') {// 숫자, 공백을 제외한 길이 세기
                cnt += 1;
            }
        }

        return (int) Math.round((total/cnt));
    }
}
  • 숫자를 문자열로 모두 선언해둔다.
  • indexOf()를 통해서 숫자인지 구별한다.
    • num.indexOf(str.charAt(i))-1이면 문자열 내에 존재하지 않는다는 의미이다.
    • 즉, num.indexOf(str.charAt(i)) != -1 이면 해당 문자는 숫자라는 의미이다.

0개의 댓글