알고리즘: readVertically

Kyoorim LEE·2022년 6월 14일
0

알고리즘TIL

목록 보기
3/40

문제

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

입력

인자 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'

풀이

접근 방법

  1. arr의 요소 중 가장 길이가 긴 요소를 정한다
  2. 이중 for문을 거꾸로 돌려준다(?)
function readVertically(arr) {
  let maxLength = 0;
   for(let i = 0; i < arr.length; i++){
     if(maxLength < arr[i].length){
       maxLength = arr[i].length;
     }
   }

   let result = '';
   for(let i = 0; i < maxLength; i++){
     for(let j = 0; j < arr.length; j++){
       if(arr[j][i] === undefined){ // 이 부분이 백미임 
         continue;
       }
       result += arr[j][i];
     }
   }
   return result;
}

한 줄평

실패한 이유

  • 이중for문 세우기가 어려웠다. 변수 i 와 j 를 이중for문을 돌린다고 했을때, i번째의 0번째인덱스 char를 다 쓰고 그다음 i+1로 넘어가야하기 때문에 머리가 아팠다
  • 머리 아픈 이유는 반드시 [i][j]순서로 돌릴 생각만 했기 때문이다
  • [j][i]로 돌리니 말끔히 해결되었따 (THINK OUTSIDE THE BOX)
profile
oneThing

0개의 댓글