[프로그래머스] 230710 코딩테스트 연습

    SMALL

    1. 배열 만들기 2

    - toString()

    - ...변수

    - every() 메서드

    function solution(l, r) {
        var answer = [];
        // 1. 5의 배수인 값 중, 0과 5만 포함하는 값 출력!
        
        for (var i=l; i<=r; i++) {
            if (i%5 != 0) continue; // 5의 배수로 1차 필터
            const charI = i.toString(); // 숫자 > 문자 변경
            
        // ** every 함수 사용: 
        // ** every() 메서드: 배열 안의 모든 요소가 주어진 판별 함수를 통과하는지 test
            if ( [...charI].every( s => s === "5" || s === "0" ) ) {
                answer.push(i)
            } else {
                continue;
            }
        }
        
        if (answer.length == 0) {
            answer.push(-1);
        }
        
        return answer;
    }

     

    2. 카운트 업

    - for문 (반복문) 사용

    function solution(start, end) {
        var answer = [];
        
        for (var i=start; i<=end; i++) {
            answer.push(i);
        }
        
        return answer;
    }

     

    3. 콜라츠수열 만들기

    - do ~ while문 사용

    function solution(n) {
        var answer = [];
        
        answer.push(n) // 초기 값 미리 넣어줌
        
        do {
            
            if (n%2 == 0) { // 짝수일 때
              n /= 2; // n = n/2
            } else { // 홀수일 때 (n%2 == 1)
              n = 3*n+1;
            }
            
            answer.push(n)
        } while (n > 1)
        
        return answer;
    
    }

     

    4. 배열만들기 4 

    - pop()

    - array.at(idx), array.slice(length-1)

    // ** 배열 마지막 값 가져오기 : 배열.at(-1), 배열.slice(-1)[0]
    // ** 배열 마지막 값 제거 : pop()
    function solution(arr) {
        var stk = [];
        let i = 0;
        
        while (i <  arr.length) {
        	// 이전에 stk == [] 로 했을 땐, 시간 초과 > 테스트케이스는 통과 됨
            if (stk.length === 0) {
                stk.push(arr[i]);
                i++;
            } else if (stk.at(-1) < arr[i]) {
                stk.push(arr[i]);
                i++;
            } else {
                stk.pop();
            }
        }
        
        return stk;
    }

     

    728x90

    댓글