문제 설명 :
문자열 my_string과 두 정수 m, c가 주어집니다. my_string을 한 줄에 m 글자씩 가로로 적었을 때 왼쪽부터 세로로 c번째 열에 적힌 글자들을 문자열로 return 하는 solution 함수를 작성해 주세요.
문자열을 배열로 만들어서 나눠야겠다
➡ 배열을 갯수만큼 자르는 법 이래저래 검색해서 코드 짬
(하다 보니 코드가 너무 길어져서 그냥 비권장이어도 아직 유효한 메소드인데 substr 쓰는 게 낫지 않나? 라는 생각이 살짝 들었으나 일단 함)
➡ 나눈 배열을 forEach로 반복 돌려서 빈 문자열에 붙임
➡ 마지막 배열 길이가 모자랄 경우 undefined가 붙길래 조건연산자 추가
그렇게 해서 작성한 코드.....
function solution(my_string, m, c) {
const str_arr = [...my_string];
const divide = Math.ceil(str_arr.length / m);
const arr_list = [];
let answer = ""
for (i = 0; i <= divide; i++) {
arr_list.push(str_arr.splice(0, m));
}
arr_list.forEach((el) => {
el[c-1] ? answer += el[c-1] : answer;
})
return answer;
}
그런데......
다른 사람들 너무 간단하게 했더라!!!!!
(match와 정규식으로 배열 자르는 방법을 사용하고 싶었는데 공식문서와 외국 튜토리얼은 내가 필요로 하는 부분만 찾기가 힘들고 이해해서 응용하기까지 너무 오래 걸린다.....한국인이 쓴 정규식표현 책을 무조건 한 권은 사야겠다....)
function solution(my_string, m, c) {
return [...my_string].filter((_, i) => i % m === c - 1).join('');
}
function solution(my_string, m, c) {
return Array.from(my_string).reduce((word, v, i) => {
return i % m + 1 === c ? word + v : word
}, '')
}
배열을 나누지 않고 인덱스만 골라내는 방법을 아예 생각하지 못했어서 머리를 한 대 맞은 기분이었다.
문제 설명에게 속은 기분!!
function solution(my_string, m, c) {
let answer ="";
for(let i = c-1; i < my_string.length ; i+=m) answer+=my_string[i];
return answer;
}
function solution(my_string, m, c) {
var answer = '';
for(let i = 0; i < my_string.length; i += m) {
answer += my_string[i + c - 1]
}
return answer;
}
배열로 만들지도 않고 문자열에 반복문을 사용한 코드도 있었다.
이것도 영리한 방법이라는 생각이 들었다.
오늘도 많은 분들께 배워갑니다......😌
시간 날 때 다시 코드 보면서 내 걸로 만들어야지.
'코딩테스트 > 프로그래머스 기초 트레이닝' 카테고리의 다른 글
[Javascript] 두 수의 합 (0) | 2023.07.13 |
---|---|
[Javascript] 문자 개수 세기, 배열 만들기 4 (0) | 2023.07.13 |
[Javascript] 조건에 맞게 수열 변환하기 2 (0) | 2023.07.08 |
[Javascript] 1로 만들기 (+답변 추가) (0) | 2023.06.28 |
[Javascript] 수열과 구간 쿼리 3 (0) | 2023.06.27 |
[Javascript] 날짜 비교하기 (0) | 2023.06.23 |
[Javascript] 특이한 이차원 배열 1 (0) | 2023.06.13 |
[Javascript] 특이한 이차원 배열 2 - every() (0) | 2023.06.13 |