LeetCode 코딩 문제 2020/12/17 - ZigZag Conversion

이호현·2020년 12월 17일
0

Algorithm

목록 보기
36/138

[문제]

The string "PAYPALISHIRING" is written in a zigzag pattern on a given number of rows like this: (you may want to display this pattern in a fixed font for better legibility)

(요약) 문자열을 지그재그로 만들고 위에서부터 차례로 나열하라.

[풀이]

var convert = function(s, numRows) {
  if(numRows === 1) return s;

  const answer = [];
  let index = 0;
  let dir = 1;

  for(let i = 0; i < s.length; i++) {
    if(i < numRows) {
      answer.push([s[index]]);
    }
    else {
      if(index < 0 || index > numRows - 1) {
        dir = dir * (-1);
        index += 2 * dir;
      }

      answer[index].push(s[i]);
    }
    index += dir;
  }
  return answer.map(arr => arr.join('')).join('');
};

numRows가 1일 때는 바로 문자열을 return하고, 아닐 때는 index값을 증가, 감소 시키면서 배열에 하나씩 push함.
마지막에 join()으로 배열로 나눠진 문자열을 합침.

profile
평생 개발자로 살고싶습니다

0개의 댓글