728x90
문제 설명
문자열 s의 길이가 4 혹은 6이고, 숫자로만 구성돼있는지 확인해주는 함수, solution을 완성하세요. 예를 들어 s가 "a234"이면 False를 리턴하고 "1234"라면 True를 리턴하면 됩니다.
제한 사항
- s는 길이 1 이상, 길이 8 이하인 문자열입니다.
- s는 영문 알파벳 대소문자 또는 0부터 9까지 숫자로 이루어져 있습니다.
입출력 예sreturn
s | return |
"a234" | false |
"1234" | true |
- 공지 - 2022년 7월 22일 테스트케이스가 추가되었습니다.
- 공지 - 2022년 7월 22일 제한 사항이 추가되었습니다.
1
2
3
4
5
6
7
8
9
10
11
|
class Solution {
boolean solution(String s) {
if(s.length()!=4 && s.length()!=6) return false;
try {
Integer.parseInt(s);
return true;
}catch (Exception e) {
return false;
}
}
}
|
cs |
문자열 길이 4 또는 6이 아니면 거짓을 리턴합니다. 정수로 바꿨을때 예외가 난다면 숫자가 아닌 문자를 포함합니다. 그래서 거짓을 리턴하고 예외가 없으면 숫자만으로 구성되어 있으므로 참을 리턴하면 됩니다. |
1
2
3
4
5
|
class Solution {
boolean solution(String s) {
return s.length()==4 || s.length()==6 ? s.replaceAll("[0-9]","").length()==0 : false;
}
}
|
cs |
정규표현식을 이용하여 숫자만 모두 지웠을때 길이가 0이면 숫자만으로 이루어져 있는것 입니다. 정규 표현식을 s.matches("^[0-9]+$") 으로 대체해도 됩니다. 숫자로 시작해서 숫자로 끝나는 숫자만의 문자열 판단식입니다. ^ : 시작 [] : 범위 * : 0개 이상 + : 1개 이상 $ : 끝 ^[0-9]+$ : 숫자로 시작해서 1개이상 나오며 숫자로 끝나는 문자열입니다. |
1
2
3
4
5
|
class Solution {
boolean solution(String s) {
return s.matches("[0-9]{4}|[0-9]{6}") ;
}
}
|
cs |
정규 표현식을 다음과 같이 작성하면 조건문 없이 가능합니다. [0-9]{4}|[0-9]{6} | 는 OR를 나타냅니다. matches()메서드는 문자열이 패턴과 일치하는지 판단합니다. 위의 패턴은 숫자 4자리 또는 숫자 6자리와 일치하는지 판단합니다. 문자열을 다룰때 정규 표현식은 참으로 유용합니다. s.matches("\\d{4}|\\d{6}") ; 위의 식도 동일한 결과를 나타냅니다. \d : 숫자 \D : 숫자가 아닌문자 자바에서 \는 이스케이프 문자이므로 반드시 \\를 사용해야 합니다. |
728x90
'프로그래머스 코딩(자바) > Level 1' 카테고리의 다른 글
Programmers Level 1 - 행렬의 덧셈 (0) | 2023.03.10 |
---|---|
Programmers Level 1 - 부족한 금액 계산하기 (0) | 2023.03.10 |
Programmers Level 1 - 약수의 개수와 덧셈 (0) | 2023.03.09 |
Programmers Level 1 - 문자열 내림차순으로 배치하기 (0) | 2023.03.09 |
Programmers Level 1 - 내적 (0) | 2023.03.09 |