[js] qr code (lv.0, 정답률 83%)

sookyoung.k·2024년 5월 13일
0
post-thumbnail

두 정수 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('').filter((v, i) => {
        if (i % q == r) return v
    }).join('');
    
}

목에 염좌와서 (쒯) 주사(더쒰) 기다리면서 푼 문제 ~^^,,, 정말... 정말... 무서웠다... 토나올 것 같았어...

암튼 꽤 간단하게 풀었던 거라 걍 넘길까 했는데 그래도 여러 방식을 생각해보고 기억하는 게 좋을 것 같아서 쓴다.

이번에는 필터로 필요한 부분만 뽑아서 반환하면 되겠군아! 하고 머리 속에 풀이가 떠오른 문제였다.

  • 하지만 일단 문자열이기 때문에 배열로 바꿔준다. 나는 여기서 split() 함수를 썼는데... 뭔가 습관이 든 듯.
  • 그리고 filter()를 사용해준다. if 조건을 걸어서 i를 q로 나눈 나머지가 r과 일치하면 v를 반환
  • 그 결과를 join() 메서드를 통해서 합쳐서 문자열로 최종 리턴해주기!

다른 풀이 1

function solution(q, r, code) {
  return [...code].filter((_, i) => i % q === r).join('');
}
  • 이거 때문에... 벨로그 쓴다! 이걸 무슨 방법이라고 하지? 암튼 그냥 대괄호 안에다가 ...를 써서 문자열을 바로 배열로 풀어주는 방법을 배웠는데 자꾸 까먹고 안쓰는 것 같음. 배운거 싸게싸게 써먹으자구요.

다른 풀이 2

function solution(q, r, code) {
    return Array.from(code).reduce((result, word, i) => {
        if (i % q === r) return result + word
        return result
    }, '')
}
  • 문자열을 배열로 만드는 방법 세 가지나 나왔군요. Array.from()을 사용해서 배열로 쪼갤 수도 있다.
  • 그리고 reduce함수를 사용해서 결과를 반환해주었다. 오... reduce를 사용할 생각은 안 들었었는데 이렇게도 할 수 있군. 초기값을 빈문자열로 줘서 이렇게 저렇게... 신기해요~
profile
영차영차 😎

0개의 댓글

Powered by GraphCDN, the GraphQL CDN