[프로그래머스] - 배열 만들기2 / 스프레드, toString(), every()

J.A.Y·2023년 9월 21일
0

자료구조/알고리즘

목록 보기
6/17
post-thumbnail

1. 문제 : 배열 만들기2

문제 설명 :

  • 정수 l과 r이 주어졌을 때, l 이상 r이하의 정수 중에서 숫자 "0"과 "5"로만 이루어진 모든 정수를 오름차순으로 저장한 배열을 return 하는 solution 함수를 완성해 주세요.

  • 만약 그러한 정수가 없다면, -1이 담긴 배열을 return 합니다

제한사항 :

  • 1 ≤ l ≤ r ≤ 1,000,000

입출력 예:

lrresult
5555[5, 50, 55, 500, 505, 550, 555]
1020[-1]

입출력 예 설명:

  1. 5 이상 555 이하의 0과 5로만 이루어진 정수는 작은 수부터 5, 50, 55, 500, 505, 550, 555가 있습니다. 따라서 [5, 50, 55, 500, 505, 550, 555]를 return 합니다.

  2. 10 이상 20 이하이면서 0과 5로만 이루어진 정수는 없습니다. 따라서 [-1]을 return 합니다.


2. 풀이 및 오류 해결:

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()을 추가해주셨길래 나도 해봤다. 그랬더니 오류가 해결됐는데 왜 이러한 오류가 났는지 곰곰이 생각해보니 아무래도 배열 요소들을 각각 개별 요소들로 분리해주기만 해서 그런 것 같다.

profile
Done is better than perfect🏃‍♀️

0개의 댓글