저장을 습관화

프로그래머스 LV.0 배열 만들기 5 본문

코딩 테스트/프로그래머스 - 자바스크립트

프로그래머스 LV.0 배열 만들기 5

ctrs 2023. 9. 24. 02:24

프로그래머스 LV.0 배열 만들기 5

https://school.programmers.co.kr/learn/courses/30/lessons/181912

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

1. 문제 명

배열 만들기 5


2. 문제 설명

문자열 배열 intStrs와 정수 k, s, l가 주어집니다. intStrs의 원소는 숫자로 이루어져 있습니다.

배열 intStrs의 각 원소마다 s번 인덱스에서 시작하는 길이 l짜리 부분 문자열을 잘라내 정수로 변환합니다. 이때 변환한 정수값이 k보다 큰 값들을 담은 배열을 return 하는 solution 함수를 완성해 주세요.


3. 제한 사항

  • 0 ≤ s < 100
  • 1 ≤ l ≤ 8
  • 10l - 1  k < 10l
  • 1 ≤ intStrs의 길이 ≤ 10,000
    • s + l  intStrs의 원소의 길이 ≤ 120


4. 예시

intStrs k s l result
["0123456789","9876543210","9999999999999"]
50000 5 5 [56789, 99999]


5. 기본 제공 코드

function solution(intStrs, k, s, l) {
    var answer = [];
    return answer;
}


6. 제출한 내 답

const solution = (intStrs, k, s, l) => {
  return intStrs
    .map((v) => {
      let test = +v.substr(s, l);
      return test > k ? test : "";
    })
    .filter((v) => v);
};

 

6-2. VSC에 작성한 내용

const solution = (intStrs, k, s, l) => {
  return intStrs
    .map((v) => {
      let test = +v.substr(s, l);
      return test > k ? test : "";
    })
    .filter((v) => v);
};

// 테스트
console.log(
  solution(["0123456789", "9876543210", "9999999999999"], 50000, 5, 5)
);


7. 특이사항

없음


8. 다른 사람이 작성한 답

8-1. slice

function solution(intStrs, k, s, l) {
    return intStrs.map((v) => +v.slice(s, s + l)).filter((v) => v > k);
}

 

8-2.

function solution(intStrs, k, s, l) {
    return intStrs.reduce((bucket, intStr) => {
        const v = Number(intStr.slice(s, s + l))
        if (v > k) bucket.push(v)
        return bucket
    }, [])
}

 

정답률 85% 문제 모두 해결

남은 문제 224 

Lv.0 63개, Lv.1 58개, Lv.2 103개