문자열을 요소로 갖는 배열을 입력받아 문자열을 세로로 읽었을 때의 문자열을 리턴해야 합니다.
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;
}
규칙을 세웠을 때 이중 반복문을 통해 반복문 조건과 기준으로 세워야할 부분을 정하기가 어려웠다.
배열의 요소 중 가장 긴 길이를 구해서 외부 for문의 기준점으로 정했다. 이렇게 하면 2차원 배열의 row만큼 내부 for문에서 돌고 2차원 요소의 길이가 다 다를 경우 배열 요소 중 가장 긴 길이만큼 2차원 배열의 요소들을 외부 for문에서 돌 수 있기 때문이다.