알고리즘: [재귀] flattenArr

Kyoorim LEE·2022년 11월 21일
0

알고리즘TIL

목록 보기
25/40

문제

다차원 배열을 입력받아 1차원 배열로 변환하여 리턴해야 합니다.

입력

인자 1 : arr

양의 정수 또는 배열을 요소로 갖는 다차원 배열 (입출력 예시 참고)

출력

배열을 리턴해야 합니다.

주의 사항

  • 함수 flattenArr는 재귀함수의 형태로 작성합니다.
  • Array Method flat()과 flatMap() 사용은 금지됩니다.
  • 반복문(for, while) 사용이 가능합니다.
  • 입력받은 배열은 함수의 호출 뒤에도 처음 상태를 유지해야 합니다(immutability).
  • 입력으로 전달되는 다차원 배열이 중첩된 정도(중첩의 깊이)는 정해져 있지 않습니다.
  • 빈 배열을 입력받은 경우, 빈 배열을 리턴해야 합니다.

입출력 예시

let output = flattenArr([[1], 2, [3, 4], 5]);
console.log(output); // --> [1, 2, 3, 4, 5]

output = flattenArr([[2, [[3]]], 4, [[[5]]]]);
console.log(output); // --> [2, 3, 4, 5]

문제 풀이

function flattenArr(arr) {
	for(let i=0; i < arr.length; i++) {
    	if(Array.isArray(arr[i]) {
         	let front = arr.slice(0,i)
          	let middle = arr[i]
            let back = arr.slice(i+1)
            let flatten = [...front, ...middle, ...back]
            return flattenArr(flatten)
         }
    }
	return arr;
}

한 줄 평

  • 입력받은 배열의 요소를 반복문으로 확인
  • 요소중에 배열이 있으면 풀어주기
  • 풀어진 배열을 인자로 전달해서 재귀로 호출하기
profile
oneThing

0개의 댓글