문자열을 요소로 갖는 배열을 입력받아 문자열을 세로로 읽었을 때의 문자열을 리턴해야 합니다.
각 문자열의 길이는 다양합니다.
각 문자의 위치를 행, 열로 나타낼 경우, 비어있는 (행, 열)은 무시합니다.
let input = [
//
'hello',
'wolrd',
];
let output = readVertically(input);
console.log(output); // --> 'hweolllrod'
input = [
//
'hi',
'wolrd',
];
output = readVertically(input);
console.log(output); // --> 'hwiolrd'
function solution (arr) {
let result = "";
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] += str[j];
}
}
}
for(let k = 0; k < temp.length; k++){
result += temp[k];
}
return result;
}
다양한 문제 풀이법이 있겠지만, 위 코드를 통했을 때는 새로운 배열을 선언해, 그 안에다가 문자열을 하나씩 넣어둘 수 있냐 없냐로 풀이가 가능하냐 못하냐로 나뉩니다.
["hello", "world"] 로 예시를 볼 때, 첫 for문에서 "hello"가 str에 담깁니다.
선언된 배열 temp는 현재 아무것도 없는 상태이기 때문에 temp.length는 for문(j)에서 돌 때, temp.length === 0 이기 때문에 temp.push(str[j])를 통해 첫 글자 h를 넣어줍니다.
for문(j)를 끝내고 다시 for문(i)로 갑니다. 다시 "world"를 push 해줍니다. 이때 for문(j)는 다시 0부터 돌기 때문에 temp.length === 0이 될 수 없습니다. 이미 h가 들어있기 때문입니다. 따라서 temp[j] += str[j]를 통해 w를 넣어줍니다. 그럼 h,w가 들어 있는 상태입니다.
이후 문자열 result에 temp.length를 순서대로 넣어주면 문제의 요구사항과 같이 출력이 가능합니다.