알고리즘

프로그래밍 문제 17번 문자열 다루기

DoosanBaek 2022. 9. 26. 17:13

이 문제는 프로그래머스에서 제공된 문제를 풀이한 문제이며, 저작권은 프로그래머스에게 있습니다.

언어 : Java

문제 : 문자열다루기

문제번호: 17번

문제 설명

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

제한 사항
  • s는 길이 1 이상, 길이 8 이하인 문자열입니다.
  • s는 영문 알파벳 대소문자 또는 0부터 9까지 숫자로 이루어져 있습니다.
입출력 예시
s return
"a234" false
"1234" true

 

Solution.java 

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

        if(s.length()== 4 || s.length() == 6) {
            try {
                int a = Integer.parseInt(s);
                answer = true;
            } catch (NumberFormatException e) {
                answer = false;
            }
        }

        return answer;
    }
}

 

답안 도출 과정:

1. 문자열 s의 길이가 4 혹은 6이고, 숫자로만 구성돼있는지 확인해주는 함수 를 읽고,

string 타입으로 문자열 s를 선언 한다.

2.문자열이 들어있을 경우 false를 answer에 입력한다.

3.  if 조건문을 활용해서 문자열 s 의 길이가 4일경우, 문자열 s 의 길이가 6일 경우  try - catch 문을 이용해서 예외처리를 해준다. 

4. 문자열 s 의 길이가 4 혹은 문자열 s 의 길이가 6일 경우 integer.parseInt 를 활용해서 예외처리를 하고 true를 리턴한다.

5.문자를 숫자로 변경하려다 발생하는 에러인 NumberFormatException이 발생하면 false 값을 answer로 리턴한다.

 

※ 문제의 조건에 해당하지 않으면 boolean answer 는 false 를 기본값으로 나오게 하고

if문에서 빨간색 테두리를 친 부분으로 이동되면 ( 문자열 s 의 길이가 4 혹은 문자열 s 의 길이가 6일 경우 ,

문자를 숫자로 변경하려다 발생하는 에러인 NumberFormatException 이 나오지 않은경우 = 숫자로만 구성된경우 )

answer 값에 true를 리턴한다.

 

실행 메소드 추가

class Solution17 {
    public boolean solution17(String s) {
        boolean answer = false;

        if(s.length()== 4 || s.length() == 6) {
            try {
                int a = Integer.parseInt(s);
                answer = true;
            } catch (NumberFormatException e) {
                answer = false;
            }
        }

        return answer;
    }

    public static void main(String[] args) {
        Solution17 solution17 = new Solution17();
        String s = "1234";
        System.out.println(solution17.solution17(s));
    }
}