두 정수 q, r과 문자열 code가 주어질 때, code의 각 인덱스를 q로 나누었을 때 나머지가 r인 위치의 문자를 앞에서부터 순서대로 이어 붙인 문자열을 return 하는 solution 함수를 작성해 주세요.
제한사항
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()
메서드를 통해서 합쳐서 문자열로 최종 리턴해주기! function solution(q, r, code) {
return [...code].filter((_, i) => i % q === r).join('');
}
...
를 써서 문자열을 바로 배열로 풀어주는 방법을 배웠는데 자꾸 까먹고 안쓰는 것 같음. 배운거 싸게싸게 써먹으자구요.function solution(q, r, code) {
return Array.from(code).reduce((result, word, i) => {
if (i % q === r) return result + word
return result
}, '')
}
Array.from()
을 사용해서 배열로 쪼갤 수도 있다.