본문 바로가기
프로그래머스

[프로그래머스] 문자열 다루기 기본

by 소금_msg 2022. 12. 1.

처음 코드는 이랬다. isNumeric 메서드에서

인자로 들어온 s를 실수로 파싱하고, 파싱이 잘되면 true, 파싱이 안되면 false를 리턴한다.

그리고 리턴값을 가지고 문자열인지 아닌지 판단한다.

class Solution {
    
     public static boolean isNumeric(String s) {
         try {
             Double.parseDouble(s);
             return true;
         } catch (NumberFormatException e) {
             return false;
         }
     }
 
    public boolean solution(String s) {
        boolean answer = true;
   
        if(isNumeric(s)){
            if(s.length()==4||s.length()==6){
                answer = true;
            }else{
                answer = false;
            }
             
        }else {
             answer = false;
        }
        
        return answer;
    }
}

 

11번 케이스만 통과가 안돼서 대체 왜지.... 고민하다가 질문하기를 찾아봤는데

 

3e10이 s로 들어온다면 double로 파싱이 가능하다..!

e는 지수의 의미를 가진 영단어 exponent의 약자 기호(=symbol) 로 만들어) "E"를 "×10^()" 대신한 간단한 약자이기 때문에 숫자맞다.

 

class Solution {
    public static boolean isNumber(String str) {
        return str.matches("[-+]?\\d*\\.?\\d+");
        }
 
    public boolean solution(String s) {
        boolean answer = true;
    
        String test = "3e10";
        //answer = isNumber(s);
        //boolean testB = isNumeric(test);
        if(isNumber(s)){
            if(s.length()==4||s.length()==6){
                answer = true;
            }else{
                answer = false;
            }
             
        }else {
             answer = false;
        }
        
        return answer;
    }
}

 

test로 넣은 값이 잘 걸려진다.

 

 

 

참고블로그

https://allcalc.org/2383