2019년 2월 1일 금요일

#12 알고리즘연습 - 문자열다루기 - JAVA


문자열다루기 

문제 설명
문자열 s의 길이가 4혹은 6이고, 숫자로만 구성되있는지 확인해주는 함수, solution을 완성하세요.
예를들어 s가 a234이면 False를 리턴하고 1234라면 True를 리턴하면 됩니다.
제한 사항
  • s는 길이 1 이상, 길이 8 이하인 문자열입니다.
입출력 예
sreturn
a234false
1234true






문제풀이 IDEA


Python으로 먼저 풀고 JAVA로 풀었는데 Python으로는 예외처리를 활용하여 풀었기 때문에

JAVA에서는 정규표현식(regular expression)을 이용해서 풀어보고자 하였다.
그럼 숫자가 몇개 와야하는지 정규표현식으로 지정해줄수 있기 때문이다.





나의코드 ⭐

1
2
3
4
5
6
7
8
9
10
class Solution {
  public boolean solution(String s) {
      String regex = "\\d{4}{6}";      //\d 는 숫자 0-9가 와야함을 의미하고 {4}{6}은 갯수가 4개 혹은 6개를 의미한다
      return s.matches(regex);          //인자로 주어진 regex(regular expression이랑 비교하여 맞아떨어지면 true 아니면
                                          false 리턴
  }
}



다른코드 1 ⭐

import java.util.*;

class Solution {
  public boolean solution(String s) {
        if (s.length() == 4 || s.length() == 6) return s.matches("(^[0-9]*$)");
        return false;                           //숫자만을 정규표현식으로 검사
  }
}


다른코드 2
예외처리 활용 코드⭐

1
2
3
4
5
6
7
8
9
10
11
12
13
14
class Solution {
  public boolean solution(String s) {
      if(s.length() == 4 || s.length() == 6){
          try{
              int x = Integer.parseInt(s);   //주어진 string을 int형으로 바꾸어
              return true;                    저장할때 문자가 있어서 formatError가 발생하면
          } catch(NumberFormatException e){   catch구문으로 보내어 false를 return 
              return false;                   
          }
      }
      else return false;         //길이가 4 혹은 6이 아니면 처음부터 false를 리턴해준다
  }
}



더 알아볼 것


matches()


사용 : String.matches(regular expression)

return : true or false

Pattern.matches(regex, str)로도 바꿔 쓸수 있다.




정규표현식(regular expression)



정리가 잘 된 블로그가 있어서 링크를 걸어둡니다

http://www.nextree.co.kr/p4327/

저도 나중에 정리하도록 하겠습니다. 언젠가...


출처:https://programmers.co.kr

댓글 없음:

댓글 쓰기

가장 많이 본 글