Liam 일지

배열 평탄화 본문

Algorithm(백준)

배열 평탄화

Liam의 일지 2021. 4. 29. 16:45
728x90

문제: 다음과 같이 주어진 배열을 평탄화(1차원배열로 나타내시오)

arr = [1, 2, [3, 4, 5], 6, [[7]]]

 

 

문제해설:

dfs방식으로 각 리스트의 인덱스별로 안에 들어있는 원소가 리스트인지 isinstance()라는 내장함수를 이용하여 판단합니다. 리스트인경우 그 리스트를 for문을 통하여 새로운 배열에 값을 넣습니다.

result = []


def solve(arr, cnt):
    if cnt == len(arr):
        print(result)
        return
    if isinstance(arr[cnt], list):
        for i in range(len(arr[cnt])):
            if isinstance(arr[cnt][i], list):
                for j in range(len(arr[cnt][i])):
                    result.append(arr[cnt][i][j])
            else:
                result.append(arr[cnt][i])
        cnt += 1
        solve(arr, cnt)
    else:
        result.append(arr[cnt])
        cnt += 1
        solve(arr, cnt)


arr = [1, 2, [3, 4, 5], 6, [[7]]]

solve(arr, 0)

 

사용언어: python

 

tip: 파이썬에 내장함수 isinstance(value,list)를 사용하면 value가 리스트인지 아닌지를 판별할 수 있습니다.

이를 통해서 다차원 배열을 원소가 리스트인지 파악하여 리스트인경우 그 리스트의 원소를 result리스트에 넣는 방식을 사용하여 1차원배열로 나타낼 수 있었습니다.