새소식

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

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

  • -

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

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

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