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

Digeut·2023년 7월 30일
0

프로그래머스

목록 보기
86/164

❔문제설명

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

⚠️제한사항

s는 길이 1 이상, 길이 8 이하인 문자열입니다.
s는 영문 알파벳 대소문자 또는 0부터 9까지 숫자로 이루어져 있습니다.

🤔아이디어

[A-Za-z]이용해서 하나씩 비교를 해서 하나라도 문자열이 포함된 경우면 false를 반환하면 되지 않을까?

❌틀린코드

import java.util.Arrays;

class Solution {
    public boolean solution(String s) {
        boolean answer = true;
        String[] sArr = s.split("");
        
        for(int i =0 ; i < s.length() ; i++){
            if(sArr[i].equals("[A-Za-z]")){
                answer = false;
            } else {
                answer = true;
            }
        }
        return answer;
    }
}

🙄오류


결과값이 계속 true가 출력이 된다. false를 만족하면 바로 break가 되게 해도 결과는 똑같았다. 어디가 잘못된거지.

❌틀린코드2

class Solution {
    public boolean solution(String s) {
        boolean answer = true;
        
        for(int i = 0 ; i < s.length() ; i++){
            ⭐char sChar = s.charAt(i);
            
            if(Character.toString(sChar).equals("[A-Za-z]")){
                answer = false;
                break;
            }
        }
        return answer;
    }
}

🙄오류2

String[] sArr = s.split("");
이 방법은 문자열 s를 빈 문자열("")을 기준으로 나누어 문자열 배열로 변환합니다. 즉, s의 각 문자가 개별적인 요소로 들어간 배열을 생성합니다. 예를 들어, 문자열 "hello"를 split("")로 변환하면 ["h", "e", "l", "l", "o"]와 같은 문자열 배열이 생성합니다.

문자열을 문자 배열로 변환하며, 각 문자를 개별 요소로 갖는 배열을 생성

char c = s.charAt(i);
이 방법은 문자열 s에서 특정 인덱스 i에 해당하는 문자를 가져옵니다. s.charAt(i)는 s의 인덱스 i에 위치한 문자를 반환하는 방법입니다. 예를 들어, 문자열 "hello"에서 s.charAt(0)은 'h'를 반환하고, s.charAt(4)는 'o'를 반환합니다.

문자열에서 특정 인덱스의 문자를 가져옵니다

split("")은 문자열을 문자 배열로 변환하여 문자열을 조작하고 분석하는데 유용하게 사용. charAt(i)는 문자열에서 특정 문자를 확인하거나 추출할 때 사용

char형태로 변환을 해서 문자를 가져왔으니까 String형태로 바꿔서 영대소문자와 비교를 위해서 Character.toString(sChar).equals("[A-Za-z]")을 진행했는데 역시나 true만 나왔다. equals말고 다른걸 써야하나?

❌틀린코드3

class Solution {
    public boolean solution(String s) {
        boolean answer = true;
        
        for(int i = 0 ; i < s.length() ; i++){
            char sChar = s.charAt(i);
            
            if(Character.toString(sChar).matches("[A-Za-z]")){
                answer = false;
                break;
            }
        }
        return answer;
    }
}

🙄오류3


정확성이 떨어진다. 테스트 코드에서 4개정도 실패가 떴다.
→ 문자열 s의 길이가 4 혹은 6이고!!!

💡코드풀이

class Solution {
    public boolean solution(String s) {
        boolean answer = true;
        
        if (s.length() != 4 && s.length() != 6) {
            answer = false;
        }
        
        for(int i = 0 ; i < s.length() ; i++){
            char sChar = s.charAt(i);
            
            if(Character.toString(sChar).matches("[A-Za-z]")){
                answer = false;
                break;
            }
        }
        return answer;
    }
}
profile
백엔드 개발자 지망생

0개의 댓글