본문 바로가기

문자열 다루기 기본

programmers code review/_step1 2021. 8. 28.
728x90

프로그래머스 Java 1단계 문자열 다루기 기본 문제입니다.


문제 설명

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

 

제한 사항

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

입출력 예

s return
"a234" false
"1234" true

 

문제 해결 방법

① 문자열 s의 길이가 4 또는 6인지 확인

    ⑴ 문자열 길이가 4 또는 6인 경우 ▶ 숫자로 변환 시도

        ⒜ 숫자로 변환 실패한 경우 ▶ NumberFormatException 에러, False 반환

        ⒝ 숫자로 변환 성공한 경우 ▶ True 반환

    ⑵ 문자열 길이가 4 또는 6이 아닌 경우 ▶ False 반환


더보기
class Solution {
    public boolean solution(String s) {
        if(s.length() == 4 || s.length() == 6){
            try{
                Integer.parseInt(s);
                return true;
            }
            catch(Exception e){
                return false;
            }
        }
        return false;
    }
}

 

※ try ⋯ catch 구문

프로그래머의 실수로 발생할 수 있는 에러, 또는 프로그램내에서 더이상 처리할 수 없는 상황일 때 발생하는 에러들을 예외처리할 수 있는 구문입니다.

위 문제에서는 Exception 클래스로 해당 에러에 대한 예외처리를 진행 하였지만, 다음 예시를 참고하여 에러발생시 다양한 예외처리 방법을 익혀두시면 좋습니다.


try{
    //에러가 발생할 수 있는 코드
    throw new Exception(); //강제 에러 출력 
} catch(ArithmeticException ex1) {
    System.out.println("0으로 나누는 처리 발생");
} catch(IndexOutOfBoundsException ex2) {
    System.out.println("배열 또는 리스트 등 인덱스 범위 초과 발생");
} catch(NumberFormatException ex3) {
    System.out.println("숫자로 변환할 수 없는 처리 발생");
} catch (Exception e){
    System.out.println("에러 발생");
    e.printStackTrace(); // 에러가 발생한 위치정보 출력
    throw e; // 현재의 상위클래스에 에러 정보 전달
}finally{
    // 현재 코드의 마지막 단계에서 반드시 실행
}

 

※ 위 코드는 해결 방법 중 한가지이며 더 효율적인 코드가 있을 수 있습니다.

 

문제 풀어보기 ▶ https://programmers.co.kr/learn/courses/30/lessons/12918?language=java
 

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

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

programmers.co.kr

 

 

 

'programmers code review > _step1' 카테고리의 다른 글

문자열 내 p와 y의 개수  (1) 2021.08.30
문자열 내림차순으로 배치하기  (0) 2021.08.29
서울에서 김서방 찾기  (0) 2021.08.26
프로그래머스 위클리 챌린지 4주차  (0) 2021.08.25
소수 찾기  (4) 2021.08.24

댓글