본문 바로가기

Study/Code Review

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

 

https://programmers.co.kr/learn/courses/30/lessons/12918

 

코딩테스트 연습 - 문자열 다루기 기본

문자열 s의 길이가 4 혹은 6이고, 숫자로만 구성돼있는지 확인해주는 함수, solution을 완성하세요. 예를 들어 s가 "a234"이면 False를 리턴하고 "1234"라면 True를 리턴하면 됩니다. 제한 사항 s는 길이 1

programmers.co.kr

 

문제 설명

문자열 s의 길이가 4 혹은 6이고, 숫자로만 구성돼있는지 확인해주는 함수, solution을 완성하세요. 예를 들어 s가 "a234"이면 False를 리턴하고 "1234"라면 True를 리턴하면 됩니다.

 

 

제한 사항

s는 길이 1 이상, 길이 8 이하인 문자열입니다.

 

 


 

01. 나의 풀이 코드

public boolean solution(String s) {
    boolean answer = true;

    if(s.length() == 4 || s.length() == 6) {
        for(int i = 0; i < s.length(); i++) {
            if(!Character.isDigit(s.charAt(i))) {
                answer = false;
            }
        }

    } else {

        answer = true;

    }

    return answer;
}

 

이렇게 하고 정답 제출 전, 코드 실행 해보니까 통과하길래 푼 줄 알았더니...

 

 

 

라고 한다...ㅂㄷㅂㄷ

뭐가 잘못 된건지 찾아보자.

 

 

 

02. 정답 풀이

 

public boolean solution(String s) {
    boolean answer = true;
    if(s.length() == 4 || s.length() == 6) {
            for(int i = 0; i < s.length(); i++) {
                if(!Character.isDigit(s.charAt(i))) {
                    answer = false;
                }
            }

        } else {

            answer = false;

        }
    return answer;
}

 

원래 풀었던 방식에서 else의 answer만 수정하거나,

 

public boolean solution(String s) {
    boolean answer = true;

    if (s.length() == 4 || s.length() == 6) {

        for (int i = 0; i < s.length(); i++) {

            if (s.charAt(i) < '0' || s.charAt(i) > '9') {

                answer = false;
            }

        }

    } else {

        answer = false;

    }

    return answer;
}

 

이렇게 바꿔보자!

 

 

문제였던 부분

if ~ else 문에서 answer를 true에서 false로 잘 못 써져있던 걸 수정하니까 통과했다.

s.length가 4 아니면 6 이지 않을 경우에~ 라는 뜻으로 else 안에 수행할 구문이 적혀있는데 당연히 false인데 true로 써놨기 때문에 그랬다.

 

논리적으로 다시 한 번 잘 생각해보고 코드를 짜도록 하자!

 

 

 

 

 

 

 


 

[공부한 내용]

 

 Charater 클래스의 isDigit() 메소드

http://www.w3big.com/ko/java/character-isdigit.html

 

자바 isdigit에 () 메소드

자바 isdigit에 () 메소드 자바 문자 클래스 isdigit에 () 메소드가 지정된 문자가 숫자인지 여부를 확인하는 데 사용됩니다. 문법 boolean isDigit(char ch) 매개 변수 ch - 판정 대상의문자입니다. 반환 값

www.w3big.com

 

- 지정된 문자가 숫자인지 확인하는 메소드

- 반환 타입은 boolean 으로 숫자면 true, 문자이면 false를 리턴한다.