JAVA) 프로그래머스 문자열다루기 기본

반응형

처음으로 프로그래머스 문제를 풀어보았다

문제 설명

 

문자열 s의 길이가 4 혹은 6이고, 숫자로만 구성돼있는지 확인해주는 함수, solution을 완성하세요.

예를 들어 s가 "a234"이면 False를 리턴하고 "1234"라면 True를 리턴하면 됩니다.

 

제한 사항

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

 

입출력 예

s return
"a234" false
"1234" true

 

 

문제를 잘 읽어야 하고 조건도 빼먹으면 안된다.

java는 잘 모르기 때문에 문자열을 char로 나눠주는 문법을 찾아보면서 풀었다

 

// 기본 함수 세팅이 이렇게 나온다
class Solution {
    public boolean solution(String s) {
    
   		// 먼저 주어진 string을 char로 나눠줄 것이기 때문에 
        // 나눠서 넣을 char 값을 하나 선언해놓는다
        char ccc = 0;
        
        // 정답에 쓰일 불리언 값
        boolean answer = true;
        
        // 밑에 반복문에 쓰일 string 값에 길이를 변수로 만들어 놓는다
        int sLen = s.length();
        
        // 문제 조건에서 s는 길이가 4 또는 6이라고 했으므로 아닐 경우 false를 바로 리턴하도록 만들어 놓는다
        if(sLen != 4 && sLen != 6) {
            answer = false;
            return answer;
        }
        
        // string을 char로 나눌 for loop
        for (int i = 0; i<sLen; i++) {
        	// charAt()으로 string의 인덱스 값을 char변수에 할당한다
            ccc = s.charAt(i);
            // 할당한 char값이 아스키 코드 값으로 숫자인지 아닌지 판별하는 조건문
            if ( ccc < 48 || ccc > 58 ) {
            	//위에 미리 answer = true; 로 해놓았기 때문에 false인 경우만 찾아주면 된다
                answer = false;
                break; // break을 안해주면 연산이 길어진다
            }
        }
        
        return answer;
    }
}

 

s의 길이 조건을 하나씩 빼먹거나

if 연산에서 처음엔 else로 아닌 값에 true를 넣어줬는데,

break을 해주지 않아서 뒷자리가 숫자일때 true로 바뀌어버리는 불상사가 생겼었다.

 

나처럼 굳이 반복문에 쓰일 string length를 변수에 넣지 않고 깔끔하게 써도 되지만 보기 좋으려고 저렇게 해봤다.

 

예전에 처음 알고리즘 사이트를 찾아볼 때

프로그래머스에는 어려운 문제가 많아서 레벨1도 어려워서 못풀거라고 생각했는데, 다행히 그 정도 수준은 아니었다.

반응형

'Algorithm > Programmers' 카테고리의 다른 글

JAVA) 프로그래머스 핸드폰 번호 가리기  (0) 2021.07.14