[프로그래머스] Lv.0 qr code

[프로그래머스] Lv.0 qr code

·

1 min read

Table of contents

문제

두 정수 q, r과 문자열 code가 주어질 때, code의 각 인덱스를 q로 나누었을 때 나머지가 r인 위치의 문자를 앞에서부터 순서대로 이어 붙인 문자열을 return 하는 solution 함수를 작성해 주세요.


제한사항

  • 0 ≤ r < q ≤ 20

  • r < code의 길이 ≤ 1,000

  • code는 영소문자로만 이루어져 있습니다.

풀이

function solution(q, r, code) {
    return code.split("").map((el, index) => index % q === r ? el : null).join("")
}

map() 함수에서 조건이 참이면(= 현재 인덱스를 q로 나눈 나머지가 r과 같다면)
현재 요소인 el을 반환하고, 조건이 거짓이면 null을 반환한다.
그리고 나서 join()을 사용해 문자열로 합친다.

  • 다른 풀이
function solution(q, r, code) {
  return [...code].filter((_, i) => i % q === r).join('');
}

filter를 쓰면 되는데 왜 생각을 못했지...😳
내가 푼 풀이는 null을 반환하게 될 경우 불필요한 요소가 남게 되기 때문에 filter를 사용해서 푸는 게 더 좋았을 것 같다.