수수한 코딩세상/Code Kata

[Programmers][Java] 문자열 다루기 기본

수수한 코딩열공생 2024. 8. 22. 11:29
728x90

문제 설명

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

 

제한 사항

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

 

입출력 예

 

코드 생각

  • 문자열 길이가 4 또는 6이여야 하는 부분을 확인하고 숫자로 구성되어 있는지 확인하는 로직으로 가야겠다.
  • Char형으로 변경해서 아스키코드로 숫자로 구성되어 있는지 확인해 봐야겠다.

 

Solution.java

class Solution {
    public boolean solution(String s) {
        boolean answer = true;
        char[] str = s.toCharArray();
        
        // 문자열 길이는 4 or 6 
        if(str.length == 4 || str.length ==6){
            for(int i = 0 ; i < str.length ; i++){
                if(48 <= str[i] && str[i] <= 57){
                    answer = true;
                }else{
                    answer = false;
                    break;
                }
            }
        }else{
            answer = false;
        }
        
        return answer;
    }
}

 

새롭게 알게 된 기술 & 주요 기술

저는 제가 문제를 풀고 다른 분들의 풀이를 보는걸 좋아하는데요, 정말 생각지도 못한 방법과 다양한 풀이법에 매번 놀라고 새로운 문제 해결 방식을 이해할 때 재미를 느낍니다. 다른 분들의 코드를 보면서 정말 많이 배웁니다. 

다양한 풀이방법에 대해 정리해 보았습니다.

 

▶ matches()

주어진 정규 표현식과 일치하는지 여부를 확인하는 함수입니다. 정규 표현식을 사용하지 않아도 가능하지만 비교하는 대상과 정확히 일치해야합니다. 일치하게 되면 true를 반환해 줍니다.

class Solution {
    public boolean solution(String s) {
        boolean answer = true;
        
        if(s.length() == 4 || s.length() == 6){
            if(s.matches("(^[0-9]*$)")){
                answer = true;
            }else{
                answer = false;
            }
        }else{
            answer = false;
        }
        return answer;
    }
}

 

▶ try-catch

문자열 전체를 정수로 바꾸고 정수가 아닌 예외가 터지면 반환값을 `false`로 해주는 방식입니다.

class Solution {
    public boolean solution(String s) {
        boolean answer = true;
        
        if(s.length() == 4 || s.length() == 6){
            try{
                int sToInt = Integer.parseInt(s);
                answer = true;
            }catch(NumberFormatException e){
                answer = false;
            }
        }else{
            answer = false;
        }
        return answer;
    }
}

 

실행결과


문제 URL

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

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr


Reference

 

[JAVA] 자바_matches (정규 표현식과 일치하는지 여부 확인)

- 정규표현식과 일치하는지 확인하기 - matches() - boolean matches(String regex) - 주어진 정규 표현식과 일치하는지 여부를 확인하는 함수이다. - 정규 표현식을 사용하지 않아도 가능하지만 "정확히" 일

mine-it-record.tistory.com

 

[프로그래머스] 문자열 다루기 기본 - 자바(Java)

문제 https://school.programmers.co.kr/learn/courses/30/lessons/12918 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘

ittrue.tistory.com

 

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

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

velog.io

 

ASCII - 위키백과, 우리 모두의 백과사전

위키백과, 우리 모두의 백과사전. 1972 프린터 사용 설명서에 개시된 아스키 코드 차트표 미국정보교환표준부호(영어: American Standard Code for Information Interchange), 또는 줄여서 ASCII( , 아스키)는 영문

ko.wikipedia.org

 

728x90