저장을 습관화
프로그래머스 LV.0 배열 만들기 2 본문
프로그래머스 LV.0 배열 만들기 2
https://school.programmers.co.kr/learn/courses/30/lessons/181921
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
1. 문제 명
배열 만들기 2
2. 문제 설명
정수 l과 r이 주어졌을 때, l 이상 r이하의 정수 중에서 숫자 "0"과 "5"로만 이루어진 모든 정수를 오름차순으로 저장한 배열을 return 하는 solution 함수를 완성해 주세요.
만약 그러한 정수가 없다면, -1이 담긴 배열을 return 합니다.
3. 제한 사항
- 1 ≤ l ≤ r ≤ 1,000,000
4. 예시
l | r | result |
5 | 555 | [5, 50, 55, 500, 505, 550, 555] |
10 | 20 | [-1] |
5. 기본 제공 코드
function solution(l, r) {
var answer = [];
return answer;
}
6. 제출한 내 답
const solution = (l, r) => {
let answer = [];
for (i = 1; i <= 63; i++) {
let tmp = i.toString(2) * 5;
if (l <= tmp && tmp <= r) {
answer.push(tmp);
}
}
return answer.length === 0 ? [-1] : answer;
};
정확성 테스트
테스트 1 〉 통과 (0.15ms, 33.4MB)
테스트 2 〉 통과 (0.15ms, 33.5MB)
테스트 3 〉 통과 (0.15ms, 33.4MB)
테스트 4 〉 통과 (0.15ms, 33.4MB)
테스트 5 〉 통과 (0.22ms, 33.4MB)
테스트 6 〉 통과 (0.15ms, 33.4MB)
테스트 7 〉 통과 (0.15ms, 33.4MB)
테스트 8 〉 통과 (0.15ms, 33.5MB)
테스트 9 〉 통과 (0.15ms, 33.4MB)
테스트 10 〉 통과 (0.19ms, 33.4MB)
테스트 11 〉 통과 (0.14ms, 33.5MB)
테스트 12 〉 통과 (0.14ms, 33.4MB)
테스트 13 〉 통과 (0.19ms, 33.5MB)
테스트 14 〉 통과 (0.15ms, 33.4MB)
테스트 15 〉 통과 (0.18ms, 33.4MB)
테스트 16 〉 통과 (0.20ms, 33.5MB)
테스트 17 〉 통과 (0.14ms, 33.4MB)
테스트 18 〉 통과 (0.14ms, 33.4MB)
테스트 19 〉 통과 (0.15ms, 33.4MB)
테스트 20 〉 통과 (0.16ms, 33.5MB)
테스트 21 〉 통과 (0.15ms, 33.4MB)
테스트 22 〉 통과 (0.14ms, 33.4MB)
채점 결과
정확성: 100.0
합계: 100.0 / 100.0
6-2. VSC에 작성한 내용
const solution = (l, r) => {
// l 이상 r 이하 중 0과 5로만 이루어진 모든 정수 배열을 오름차순으로 리턴
// 없다면 [-1] 리턴
// 1, 10, 11, 100, 101, 110,.... 2진법이네?
let answer = [];
for (i = 1; i <= 63; i++) {
let tmp = i.toString(2) * 5;
if (l <= tmp && tmp <= r) {
answer.push(tmp);
}
}
return answer.length === 0 ? [-1] : answer;
};
// 테스트
console.log(solution(5, 555));
console.log(solution(10, 20));
7. 특이사항
없음
8. 다른 사람이 작성한 답
8-1. 좋아요를 가장 많이 받은 풀이법, 정규표현식
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];
}
8-2.
// 숫자 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];
}
'코딩 테스트 > 프로그래머스 - 자바스크립트' 카테고리의 다른 글
프로그래머스 LV.1 이상한 문자 만들기 (0) | 2023.10.03 |
---|---|
프로그래머스 LV.0 배열 조각하기 (0) | 2023.10.03 |
프로그래머스 LV.0 전국 대회 선발 고사 (0) | 2023.10.03 |
프로그래머스 LV.0 코드 처리하기 (0) | 2023.10.03 |
프로그래머스 LV.0 직사각형 넓이 구하기 (0) | 2023.10.03 |