[프로그래머스] 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