'str1[0]str2[0]str1[1]str2[1]...'
으로 조합된 문자열 반환 maxLength
배열요소들의 길이 중에서 가장 긴 길이를 구하기 위해서 Math.max()
메서드를 이용했다.
function readVertically(arr) {
let result = ''
let wordLength = arr.map(el => el.length) //배열 안에 담긴 문자열의 길이가 담긴 배열
let maxLength = Math.max(...wordLength) // 해당 배열에서 가장 큰 값을 구해줌(가장 긴 문자열 길이)
for(let i = 0; i < maxLength; i++) { //가장 긴 문자열 길이만큼 반복
for (let j = 0; j< arr.length ; j++) { //배열의 요소 갯수만큼 반복한다.
if (arr[j][i]) { //해당하는 인덱스 값이 있을경우에만
result += arr[j][i] //값을 담아준다.
}
}
}
return result
}
reduce()
를 이용해서 가장 긴 길이를 구하는 코드로 바꿔봤다.
function readVertically(arr) {
let result = ''
let wordLength = arr.map(el => el.length)
let maxLength = wordLength.reduce((previous, current) => {
return (previous > current ? previous: current)
})
for(let i = 0; i < maxLength; i++) {
for (let j = 0; j< arr.length ; j++) {
if (arr[j][i]) {
result += arr[j][i]
}
}
}
return result
}
이중 for문은 풀 때마다 헷갈린다. 오늘도 역시나 손으로 그려가면서 풀었다..! 많이 써보면서 익숙해지는 수 밖에 없을 것 같다.
쉬면서 풀어본 grasshopper라는 앱에서 이중 for문을 설명한 예제 코드가 직관적이어서 메모했다.
for (let activity of ['dancing', 'jumping', 'singing']) {
for (let family of ['brother', 'mother', 'father']) {
console.log(activity + ' ' + family);
}
console.log('\n');
}
/*출력 결과
dancing brother
dancing mother
dancing father
jumping brother
jumping mother
jumping father
singing brother
singing mother
singing father
*/