본문 바로가기

코테/프로그래머스

[코딩 기초 트레이닝] 배열 만들기 2

728x90

[코딩 기초 트레이닝] 배열 만들기 2

문제 링크

구분

코딩 기초 트레이닝 > 배열 만들기 2

풀이 요약

0과 5로만 이루어진 모든 정수를 오름차순으로 저장한 배열을 출력하는 문제

나의 풀이

function solution(l, r) {
    let answer = [];
    for(let i=l; i<=r; i++){
        let arr=String(i)
        if(![...arr].every((x)=>x==="5"|| x==="0"))
            continue;
        answer.push(i)
    }
    return answer.length===0 ? [-1] : answer;
}

먼저 정수 l부터 r까지의 수를 문자열로 변환하여 각 자리가 0또는 5인지 확인합니다.

조건을 만족하는 숫자를 answer 배열에 추가합니다.

answer 배열의 길이가 0이면 [-1]을 반환하고 그렇지 않으면 answer 배열을 반환합니다.

배운점

처음 문제를 풀때 for문의 i를 5씩 증가하게 (i+=5)로 하였으나 통과하지 못했습니다.

i를 5씩 증가하게 하면 안되는 이유는

  1. i+=5는 현재 숫자에서 5를 더하는 방식이라 모든 숫자를 건너뛰기 때문에 0과 5로만 이루어진 숫자를 놓칠 수 있습니다.
  2. 또한 l부터 r까지의 모든 숫자를 포함하지 못할 수 있습니다.
  3. 뿐만아니라 0과 5로 구성된 숫자들이 반드시 5의 배수라는 보장이 없습니다.
  4. (예를들어, 100은 0과 5로만 구성되지 않지만 105는 그렇습니다. 따라서, i+=5를 사용하면 0과 5로만 구성된 숫자를 제대로 찾지 못할 수 있습니다.)

every 메서드는 배열의 모든 요소가 조건을 충족하는지 확인하는 메서드 입니다.

이 문제를 풀면서 every 메서드의 사용법에 대해 배울 수 있었습니다.

728x90