-
[JS] 배열 만들기 2코테라도 하자 2023. 8. 16. 16:55
코딩 테스트 연습 > 코딩 기초 트레이닝 > 배열 만들기 2
https://school.programmers.co.kr/learn/courses/30/lessons/181921
문제 설명
정수 l과 r이 주어졌을 때, l 이상 r이하의 정수 중에서 숫자 "0"과 "5"로만 이루어진 모든 정수를 오름차순으로 저장한 배열을 return 하는 solution 함수를 완성해 주세요.
만약 그러한 정수가 없다면, -1이 담긴 배열을 return 합니다.
입출력 예
l r result 5 555 [5, 50, 55, 500, 505, 550, 555] 10 20 [-1]
내 풀이
function solution(l, r) { const ranges = Array(r-l+1).fill().map((x,i)=> l+i); const filtered = ranges.filter(x=> /^[5]+[0,5]*$/g.test(x)); return filtered.length > 0 ? filtered : [-1]; }
처음에 너무 어렵게 생각해서 다차원 배열 만들어서 해야하나? 이진법 사용해서 곱하기 5해야하나.. 별의별 생각 다했는데
그냥 5, 0 아닌 숫자는 제거하면 되는 거였다.
다른 사람 풀이
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]; }
Array.from을 이렇게 쓸 수 있는 거군아.. 정규식도 더 간단하게 할 수 있었다..
파이썬에서는 차집합을 활용하던데 자바스크립트에서는 차집합 연산자는 없어서 안되겠다.
'코테라도 하자' 카테고리의 다른 글
[프로그래머스] 2의 영역.js (0) 2023.12.14 [leetcode] 125 유효한 팰린드롬(Valid Palindrome) (0) 2023.12.14 [JS] 구슬을 나누는 경우의 수 (1) 2023.08.22 [JS] 문자열 겹쳐쓰기 (0) 2023.08.14 [JS] 문자열 반복해서 출력하기 (0) 2023.08.14