oris9

[코딩테스트] 프로그래머스 배열 만들기 2 본문

알고리즘, 자료구조

[코딩테스트] 프로그래머스 배열 만들기 2

oris9 2024. 3. 14. 12:30

 

코딩테스트 연습 > 코딩 기초 트레이닝 > 배열 만들기 2
https://school.programmers.co.kr/learn/courses/30/lessons/181921

 

 

`정규표현식`, 또는 `이진수` 개념을 이용해 풀 수 있는 문제였다.

function solution(l, r, arr = []) {
  for (let i = l; i <= r; i++) {
    if (i.toString().replaceAll(/[05]/g, "") === "") arr.push(i);
  }
  return arr.length ? arr : [-1];
}

console.log(solution(5, 555)); // [5, 50, 55, 500, 505, 550, 555]
console.log(solution(10, 20)); // [-1]

 

2024.03.11 - [분류 전체보기] - [Javascript] 정규표현식(RegExp, regular expression) 정리하기

 

// 숫자 5로 현혹시켰지만 사실 이건 이진수 문제임.
function* gen50() {
    let i = 1;

    while(true) {
        yield Number(Number(i).toString(2)) * 5;
        i++;
    }
}
function solution(l, r) {
    const n = gen50();
    let a = 0;
    const arr = [];

    while(a < l) { a = n.next().value; }
    while(a <= r) { arr.push(a); a = n.next().value; }

    return arr.length ? arr : [-1];
}

 

다른 사람의 풀이를 보다가 `function*`과 `yield` 키워드를 처음 보게 됐다.

공부하기 !

 

2024.03.13 - [분류 전체보기] - [Javascript] 제너레이터 함수에 대해 알아보자