문제
요약
문자열과 정수가 주어지면 그에 맞는 지그재그 문자열로 변환 후 반환하는 함수를 작성하라
이건 설명보단 예시를 보면 이해가 쉽다
풀이
예시를 보면 입력된 정수의 크기와 열의 길이가 똑같은 것을 알 수 있다
0 : P A H N
1 : A P L S I I G
2 : Y I R
그럼 정수 크기만큼 배열을 선언한 뒤 문자를 각각 배열에 넣어주면 될거라는 생각이 들었고 곧
P A H N A P L S I I G Y I R
0 1 2 1 0 1 2 1 0 1 2 1 0 1
이런 반복적인 패턴을 알 수 있어서 이제 차례대로 배열에 넣기만 하면되겠다는 생각을 했는데...
01210..을 어떻게 반복시킬까 고민하던 중 그냥 패턴을 배열화 시켜서 패턴만 따로 돌리자는 아이디어가 떠올랐다
/**
* @param {string} s
* @param {number} numRows
* @return {string}
*/
var convert = function(s, numRows) {
const arr ={};
for(let i=0; i<numRows; i++) arr[i] = [];
let index=0;
const pattern = makePattern(numRows);
let answer='';
while(index<s.length){
arr[pattern[index%pattern.length]].push(s[index]);
index++;
}
for(let i=0;i<numRows;i++){
answer += arr[i].join('');
}
return answer;
};
function makePattern(number) {
const newArr =[];
for(let j=0; j<number;j++){
newArr.push(j);
}
for(let j=number-2;j>0;j--){
newArr.push(j);
}
return newArr;
}
'Algorithm > 문제' 카테고리의 다른 글
baekjoon. LCS (0) | 2021.01.26 |
---|---|
leetcode. Reverse Integer (0) | 2021.01.19 |
leetcode. Longest Substring Without Repeating Characters (0) | 2021.01.16 |
leetcode. Add Two Numbers (0) | 2021.01.14 |
leetcode. Two Sum (0) | 2021.01.11 |