문자열다루기
문제 설명
문자열 s의 길이가 4혹은 6이고, 숫자로만 구성되있는지 확인해주는 함수, solution을 완성하세요.
예를들어 s가
예를들어 s가
a234이면 False를 리턴하고
1234라면 True를 리턴하면 됩니다.
제한 사항
s
는 길이 1 이상, 길이 8 이하인 문자열입니다.
입출력 예
s | return |
---|---|
a234 | false |
1234 | true |
문제풀이 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
댓글 없음:
댓글 쓰기