알고리즘 13번 readVertically

Judo·2020년 11월 15일
0
post-thumbnail
post-custom-banner

문제


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

풀이코드


function readVertically(arr) {
  // code goes here

  /* 
    1.배열을 입력받는다.
    2.배열의 요소를 세로로 읽는다.
      - 세로로 읽는다?
      - 규칙 : arr[0][0] + arr[1][0] -> arr[0][1] + arr[1][1] -> arr[0][2] + arr[1][2]
      - 첫 번째 인수 범위는 arr의 길이까지, 두 번째 인수는 배열의 요소 중 가장 긴 길이
      - 두 번째 인수 : 배열 요소 중 가장 긴 길이를 구한다.  
      - 이중 for문을 이용해 외부 포문에선 두번째 요소를 기준으로 돌고
      - 내부 for문에선 첫 번째 요소를 기준으로 돈다.
      - 접근한 각 요소를 result에 할당한다.
    3.result를 리턴한다.
  */
   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;
   
   
}

어려웠던 점


규칙을 세웠을 때 이중 반복문을 통해 반복문 조건과 기준으로 세워야할 부분을 정하기가 어려웠다.

KEY


배열의 요소 중 가장 긴 길이를 구해서 외부 for문의 기준점으로 정했다. 이렇게 하면 2차원 배열의 row만큼 내부 for문에서 돌고 2차원 요소의 길이가 다 다를 경우 배열 요소 중 가장 긴 길이만큼 2차원 배열의 요소들을 외부 for문에서 돌 수 있기 때문이다.

profile
즐거운 코딩
post-custom-banner

0개의 댓글