4강 도전문제 4번

집중한 볼따구·2022년 9월 22일
0

혼.공.파 문제풀이

목록 보기
10/11

리스트 평탄화 list flatten

리스트 평탄화 : 리스트가 중첩되어 있을 때 중첩을 제거하는 처리

Q. 문제

중첩 리스트를 입력했을 때 다음과 같이 출력되는 프로그램 구현

힌트

리스트 평탄화를 할 때는 '요소가 일반 요소인지 리스트인지 확인'하는 처리가 필요함.

type( ) 함수 사용 예시

if type(대상) == list:
    print("대상은 리스트입니다!")

A. 나의 풀이

lis = [1,2,[3,4],5,[6,7],[8,9]]
lis_a =[]

for i in range(len(lis)):
    if type(lis[i]) != list:
        lis_a[i] = lis[i]

    elif type(lis[i]) == list:
        for j in range(lis[i]):
            lis_a[i] = lis[i+j]

print(f"{lis}를 평탄화하면\n{lis_a}입니다")

나의 풀이 결과

오류 떴다.
뭐가 틀리고 뭐가 맞는 건지 모르겠다...

A.답지 풀이

a = [1,2,[3,4],5,[6,7],[8,9]]
output =[]

for i in a:
    if type(i) == list:
        for j in i:
            output.append(j)
    else:
        output.append(i)

print(f"{a}를 평탄화하면")
print(f"{output}입니다")

답지 풀이 결과

코멘트

내가 문제 해석을 너무 어렵게 했나보다.
for문 안에 if문으로 요소의 자료형을 확인하는 구조는 맞았지만
output리스트에 요소를 차례로 넣는 방법을 몰랐다.

append( ) 함수 : 리스트 위에 요소를 추가하는 함수
리스트.append(추가할 요소)

0개의 댓글