https://school.programmers.co.kr/learn/courses/30/lessons/181921
문제
💭 나의 생각
"0"과 "5"로만 이루어진 모든 정수를 구하면 되기 때문에 정규표현식을 사용하여 풀어보았다.
💻 나의 코드
import java.util.*;
class Solution {
public int[] solution(int l, int r) {
ArrayList<Integer> numbers = new ArrayList<>();
for (int i = l; i <= r; i++) {
// 숫자를 문자열로 변환하여 "0", "5"만 포함되어 있는지 확인한다.
String numString = String.valueOf(i);
if (numString.matches("[05]+")) {
numbers.add(i);
}
}
if (numbers.isEmpty()) {
numbers.add(-1);
}
// 배열로 변환하여 출력한다.
return numbers.stream().mapToInt(Integer::intValue).toArray();
}
}
🎯 배운 것
- boolean matches(String regex) : 문자열이 정규식(regex)에 일치하는지 판별
- [05]+ : "0"과 "5"로만 이루어진 문자열을 찾기 위한 패턴
패턴을 구성하는 요소- [ ] : 괄호 안에 들어있는 문자들 중 하나와 매치
- 0 : 문자 '0'과 정확히 일치
- 5 : 문자 '5'와 정확히 일치
- + : 바로 앞에 있는 문자 또는 그룹이 하나 이상 반복되는 것과 매치
- intValue() : Integer객체를 기본형 int로 언박싱하여 정수값을 반환