새소식

프론트엔드 공부/자료구조 & 알고리즘

문자열을 요소로 갖는 배열을 입력받아 문자열을 세로로 읽었을 때의 문자열을 리턴해야 합니다.

  • -

readVertically

문제

문자열을 요소로 갖는 배열을 입력받아 문자열을 세로로 읽었을 때의 문자열을 리턴해야 합니다.

입력

인자 1 : arr

  • string 타입을 요소로 갖는 배열

출력

  • string 타입을 리턴해야 합니다.

주의 사항

  • 각 문자열의 길이는 다양합니다.
  • 각 문자의 위치를 행, 열로 나타낼 경우, 비어있는 (행, 열)은 무시합니다.

입출력 예시

let input = [
  //
  'hello',
  'wolrd',
];
let output = readVertically(input);
console.log(output); // --> 'hweolllrod'

input = [
  //
  'hi',
  'wolrd',
];
output = readVertically(input);
console.log(output); // --> 'hwiolrd'

코드

// 작성코드
function readVertically(arr) {
  let result = "";
  let maxLength = 0;
  for (let str of arr) {
    if (str.length > maxLength) {
      maxLength = str.length;
    }
  }
  for (let i = 0; i < maxLength; i++) {
    for (let str of arr) {
      if (str[i]) {
        result += str[i];
      }
    }
  }
  return result;
}

// 작성코드2
function readVertically(arr) {
 let maxLength = Math.max(...arr.map(str => str.length));
  return [...Array(maxLength).keys()].map(i =>
    arr.reduce((res, str) => res + (str[i] || ''), '')
  ).join('');
}

// 레퍼런스 코드
function readVertically(arr) {
  let temp = [];
  for (let i = 0; i < arr.length; i++) {
    let str = arr[i];
    for (let j = 0; j < str.length; j++) {
      if (temp.length === j) {
        temp.push(str[j]);
      } else {
        temp[j] = temp[j] + str[j];
      }
    }
  }

  let result = '';
  for (let i = 0; i < temp.length; i++) {
    result = result + temp[i];
  }

  return result;
}
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.