본문 바로가기
알고리즘/코딩 - 프로그래머스

[Java][프로그래머스][Level 1] 문자열 다루기

by 주남2 2019. 3. 31.
반응형

문제 설명

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

 

제한 사항

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

생각

먼저 문자열의 길이부터 생각해준다! 문자열의 길이가 4 혹은 6이 아니라면 뒷부분이 숫자로만 구성되어있는지 문자로만 구성되어있는지는 중요하지 않다. 그러기에 기본 answer을 false라고 저장해둔다. 

 

숫자와 문자를 어떻게 구분해줄까를 생각하다가 try catch를 생각했다. 문자열이 숫자로만 되어있다면 Integer.ParseInt(String str)을 사용할 경우 전혀 문제가 생기지 않을 것이다. 그래서 이 부분을 try문에 넣어준다. 만약 이문자열에 문자가 끼어있다면 숫자로 바꿔주는 함수를 사용할 경우 에러가 날 것이다. 그때의 경우는 catch문제 넣어줘서 answer = false (사실 기본으로 false로 해놔서 설정해줄 필요는 없다)로 바꿔주는 것이다. 

 

코드

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
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;
      }
    }
http://colorscripter.com/info#e" target="_blank" style="color:#4f4f4f; text-decoration:none">Colored by Color Scripter
 

 솔직히 이 방법을 생각해내고 나 혼자 자화자찬을 하며 아무도 이렇게 안하겠지? 라고 생각하고 있었다. 하지만 다른 사람의 풀이를 들어가 보니 가장 많이 좋아요를 받은 풀이가 나의 풀이와 같았다!!! 여러 사람이 이런 방법을 생각한 것은 아쉬웠지만 그런대로 뿌듯했다. ㅎㅎ

반응형