반응형
문제 설명
문자열 s의 길이가 4 혹은 6이고, 숫자로만 구성돼있는지 확인해주는 함수, solution을 완성하세요. 예를 들어 s가 "a234"이면 False를 리턴하고 "1234"라면 True를 리턴하면 됩니다.
나의 풀이
public class StringExercise {
public static void main(String[] args) {
String str = "912345";
System.out.println("RESULT : "+ solution(str) );
}
public static boolean solution(String s) {
boolean answer = false;
try {
if(s.length()==4 || s.length()==6){
Integer number = Integer.parseInt(s);
if(number > 0)
answer = true;
}
}catch (Exception e){ e.printStackTrace(); }
return answer;
}
}
접근
별 다른 로직이 필요 없어 보이고, 역시 가장 단순하지만 기본적인 접근으로 시작!
간단한 조건식(if)과 try/catch로 처리가 가능해보여서 작성하다 보니까 완성했는데, Best 풀이라 딱히 언급할건 없어보임
중간에 5,6번과 11번 데이터에 대한 처리가 약간 골치였지만! 음수, 자리수를 잘 처리해주었다.
다른 사람의 풀이
// 정규식을 활용한 다른 사람의 풀이
public static boolean solution2(String s) {
boolean answer = false;
if(s.length()==4 || s.length()==6){
String pattern = "^[0-9]*$";
return s.matches(pattern);
}
return answer;
}
대동소이하나, 보통 정규식의 유무 정도만 다르고 대체로 다른 답도 비슷해 보인다.
느낀점
- 자주 쓰이는 정규식은 잘 알아두면 항상 편리하니까 정리!
str.matches("^[0-9]*$") // 숫자만 있는지 확인
str.matches("^[a-zA-Z]*$") // 문자(영어)만 있는지 확인
str.matches("^[a-zA-Z0-9]*$") // 문자(영어)+숫자만 있는지 확인
- matches는 뒤의 정규식이 있는지 boolean으로 결과 반환
- ^ : 문자열 시작
- [ ] : 문자의 집합
- * : 앞문자가 많거나 무제한일수 있음 (*$: 자리수 상관없이 확인할때)
- $ : 문자열 끝
- ^[a-zA-Z]*$ : 첫 문자
- 자주 쓸때는 좀 익숙하다가도, 오랜만에 보니까 정규 표현식이 기억이 안난다.
https://moonong.tistory.com/31 참고하자!
반응형
'개발 > 코딩 테스트' 카테고리의 다른 글
[알고리즘] 프로그래머스 > 정렬 > 가장 큰 수 (0) | 2022.07.27 |
---|---|
[알고리즘] 프로그래머스 > 정렬 > 가장 큰 수 (0) | 2022.07.24 |
[프로그래머스] 나머지가 1이 되는 수 찾기 (0) | 2022.07.05 |
[프로그래머스] 없는 숫자 더하기 (0) | 2022.07.05 |
[프로그래머스] 완전 탐색 - 모의고사 (0) | 2022.05.28 |