문제 설명 :
정수 l과 r이 주어졌을 때, l 이상 r이하의 정수 중에서 숫자 "0"과 "5"로만 이루어진 모든 정수를 오름차순으로 저장한 배열을 return 하는 solution 함수를 완성해 주세요.
만약 그러한 정수가 없다면, -1이 담긴 배열을 return 합니다
제한사항 :
입출력 예:
l | r | result |
---|---|---|
5 | 555 | [5, 50, 55, 500, 505, 550, 555] |
10 | 20 | [-1] |
입출력 예 설명:
5 이상 555 이하의 0과 5로만 이루어진 정수는 작은 수부터 5, 50, 55, 500, 505, 550, 555가 있습니다. 따라서 [5, 50, 55, 500, 505, 550, 555]를 return 합니다.
10 이상 20 이하이면서 0과 5로만 이루어진 정수는 없습니다. 따라서 [-1]을 return 합니다.
function solution(l, r) {
var answer = [];
for (let i = l; i <= r; i++) {
if (i%5 !== 0) {
continue;
}
// split()은 문자열을 배열로 변환, 배열로 문자열을 만들 때는 spread 문법으로
if (![...i.toString()].every(item => item === '5' || item === '0')) {
continue;
}
answer.push(i);
}
return answer.length ? answer : answer = [-1];
}
처음에 정수 i를 스프레드만 해서 every()
메소드를 적용했는데 TypeError: i is not iterable
라면서 오류가 났다. 다른 분의 정답을 보니 toString()을 추가해주셨길래 나도 해봤다. 그랬더니 오류가 해결됐는데 왜 이러한 오류가 났는지 곰곰이 생각해보니 아무래도 배열 요소들을 각각 개별 요소들로 분리해주기만 해서 그런 것 같다.