연습장

32. 배열 만들기 2 본문

프로그래머스/0단계

32. 배열 만들기 2

js0616 2023. 6. 23. 23:02

Q. 정수 l과 r이 주어졌을 때, l 이상 r이하의 정수 중에서 숫자 "0"과 "5"로만 이루어진 모든 정수를 오름차순으로 저장한 배열을 return 하는 solution 함수를 완성해 주세요.
만약 그러한 정수가 없다면, -1이 담긴 배열을 return 합니다.

 

제한사항

1 ≤ l ≤ r ≤ 1,000,000

 


l 과 r 사이의 숫자들중 0과 5 만으로 표현되는 숫자를 배열로 모우면 된다 .

 

먼저 l과 r 사이의 숫자를 뽑기위해 for 문을 사용 

숫자의 자릿수를 각각 구분하기위해서 

`${i}` 로 문자로 만들고

[...str] //  배열로 만들어주는 spread operator 사용했다. 

그리고 배열로 바뀐 문자열이 각각 "5" 거나 "0" 일때마다

 

그다음 카운트를 샐 변수  j 를 만들어서 조건을 만족하면 1 씩 추가하였다. 

 

ex) 515 의 경우 

5 -> j = 1

1 -> j = 1

5 -> j = 2 

가 되며 '515' 의 length = 3 이며 j = 2 로  같지 않다.  따라서 이는 원하는 수가아니다.

 

ex) 5050 의 경우

5 -> j = 1

0 -> j = 2

5 -> j = 3

0 -> j = 4

 

이되며 

'5050' 의 length = 4 이며 와 j = 4 로 값이 같게 된다. 따라서 우리가 원하는 수가 된다.


 

function solution(l, r) {
    var answer = [];
    for (let i = l ; i <=r ; i++){       // i 는 l 과 r 사이로 확인할 숫자들 
        let j = 0;                           // j 는 0 또는 5 의 갯수를 확인 
        for(x of [...`${i}`]){
            if (x == "5"){
                j++
            }
            if (x == "0"){
                j++
            }
        }
        if ( `${i}`.length ==j){
            answer.push(i)
            } 
        }
    if(answer.length == 0){
        answer.push(-1)
    }
    return answer;
}

 

 

'프로그래머스 > 0단계' 카테고리의 다른 글

34. 콜라츠 수열 만들기  (0) 2023.06.23
33. 카운트 업  (0) 2023.06.23
31. 수열과 구간 쿼리 4  (0) 2023.06.23
30. 수열과 구간 쿼리 2  (0) 2023.06.23
29. 수열과 구간 쿼리 3  (0) 2023.06.23