DAILY

5월 8일 알고리즘 연습문제

ssund 2023. 5. 9. 02:28

https://school.programmers.co.kr/learn/courses/30/lessons/181923
https://school.programmers.co.kr/learn/courses/30/lessons/181921

범위에 배열을 초기화 할 때 만들어주고 ,

정규표현식을 이용해 0, 5문자가 있는 경우만 추출한다. 

function solution(l, r) {
    const result = Array.from({length: r - l + 1}, (_, i)=> i + l).filter(n=>!/[^05]/.test(n));
    return result.length ? result : [-1];
}
// /[^05]/ 0,5이외에 다른문자열이 있는지 확인 true가 나오면 다른문자열 있는것

https://school.programmers.co.kr/learn/courses/30/lessons/181920
https://school.programmers.co.kr/learn/courses/30/lessons/181919


나의 풀이 
조건에 맞을때 까지 while문으로 반복을 해줬다. 

function solution(n) {
    var answer = [];
    answer.push(n)
    
    while(n !== 1) {
        if(n % 2 === 0) {
            n = parseInt(n / 2)
        } else {
            n = 3 * n + 1
        }
        answer.push(n)
    }
    
    return answer;
}

 

재귀함수를 사용한 풀이 

function solution(n, arr = []) {
    arr.push(n);
    
    if (n == 1) return arr;
    if (n % 2 === 0) return solution(parseInt(n / 2), arr);
    return solution(3 * n + 1, arr)
}

https://school.programmers.co.kr/learn/courses/30/lessons/181918