프로그래머스 Lv.1 문자열 다루기 기본 JAVA

Study with cocochichi·2023년 10월 30일
0

프로그래머스 Lv.1

목록 보기
6/21
post-thumbnail

문제 설명

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

제한 사항

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

입출력 예

sreturn
"a234"false
"1234"true

풀이코드

class Solution {
    public boolean solution(String s) {
       
        if(s.length() == 4 || s.length() == 6){
            for(char c : s.toCharArray()){
                if(!Character.isDigit(c)){
                    return false; // 숫자만 포함 X
                }
            }
            return true; // 숫자만 O
        }
        return false; // 길이 4 또는 6 아니면 false
        
    }
}

✏️ 풀이방법

  1. 먼저 if문으로 문자열 s의 길이를 판단해줌 길이가 4 또는 6이 아니면 return false
  2. 향상된 for문을 사용하여 문자배열로 변환
  3. if문으로 isDigit() 숫자인지 판단하고 숫자만으로 구성되어 있지 않을 때 return false , for문 바깥에 숫자만으로 구성되어 있으면 return true

다른 풀이코드

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

      if (s.length() != 4 && s.length() != 6) return false;
      for (int i = 0; i < s.length(); i++) {
          if (s.charAt(i) < '0' || s.charAt(i) > '9') return false;
      }
      return answer;
  }
}

✏️ 리뷰

다른 사람들 풀이 보니까 다들 나처럼 == 4 || == 6을 하는게 아니라 != 4 || != 6 부정문을 써서 return true를 하던데 그게 좀 더 안헷갈리고 훨씬 나을 것 같다고 느꼈다. 저거 하면서도 맨 안쪽 if문에 else { return true를 하니까 코드 실행 했을 때 통과했지만 제출을 하니까 실패한 경우가 굉장히 많았다. 그래서 바깥에 하는 경우가 맞지만 굉장히 헷갈린다..🥲 try~catch문도 있던데 공부를 해야겠다.

헷갈림 해소 풀이코드

class Solution {
  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{ 를 덧붙이고 싶었는데 실패했다. 만약 하려면 이렇게 하는게 좋을 듯 하다!!! 헷갈림 해소 완!!

0개의 댓글