문제
LeetCode 6. ZigZag Conversion
https://leetcode.com/problems/zigzag-conversion/
언어
자바스크립트(JavaScript)
접근 방법
- numRows 크기의 배열을 생성한다.
- 사이클의 크기를 계산한다.
- 사이클에 맞게 각 배열에 문자를 삽입한다.
- 각 배열의 문자를 합쳐 반환한다.
코드
/**
* @param {string} s
* @param {number} numRows
* @return {string}
*/
var convert = function(s, numRows) {
if(numRows === 1 ){
return s;
}
// 사이클의 크기 계산
const cycleSize = 2 * numRows - 2;
const arr = new Array(numRows).fill('');
// 사이클에 맞게 각 배열에 문자 삽입
for (let i=0; i<s.length; i++){
let cycleIdx = i % cycleSize;
let rIdx = (cycleIdx < numRows) ? cycleIdx : 2 * numRows - cycleIdx - 2;
arr[rIdx] += s[i];
}
return arr.join('');
};
결과
Runtime: 104 ms, faster than 84.88% of JavaScript online submissions for ZigZag Conversion.
Memory Usage: 42.4 MB, less than 83.98% of JavaScript online submissions for ZigZag Conversion.
복기
- 처음에 2차원 배열로 풀었는데, 훨씬 간단하게 1차원 배열로 풀 수 있었다.
- 더 간단하게 풀 수 있는 생각을 해야한다.
'개발 공부 > 알고리즘 문제 풀이' 카테고리의 다른 글
LeetCode 11. Container With Most Water (0) | 2021.06.23 |
---|---|
[LeetCode] 8. String to Integer (atoi) (0) | 2021.06.23 |
[LeetCode] 3. Longest Substring Without Repeating Characters (0) | 2021.06.22 |
[LeetCode] 792. Number of Matching Subsequences (0) | 2021.06.22 |
[LeetCode] 2. Add Two Numbers (0) | 2021.06.22 |