7028 : 중첩 리스트 평탄화
•시간제한: 1.000 S
•메모리제한: 256 MB
•제출: 3
•통과: 1
•만든사람: suakii
문제 설명
대괄호와 쉼표로 다중 중첩된 리스트 표현식이 문자열로 주어집니다.
이 중첩된 리스트 내부에 있는 모든 정수 원소들을 순서대로 추출하여 깊이가 없는 단일 1차원 리스트로 만드는 것을 평탄화(Flatten)라고 합니다.
예를 들어, 중첩 리스트
중첩 리스트 문자열이 주어졌을 때, 이를 평탄화하여 원소들을 순서대로 출력하는 프로그램을 작성하십시오.
[제약 조건]
• 최대 중첩 깊이: $\le 5$
• 정수 원소 총 개수: $\le 1{,}000$
이 중첩된 리스트 내부에 있는 모든 정수 원소들을 순서대로 추출하여 깊이가 없는 단일 1차원 리스트로 만드는 것을 평탄화(Flatten)라고 합니다.
예를 들어, 중첩 리스트
[[1, [2, 3]], [4, [5, [6]]]]를 평탄화한 결과는 [1, 2, 3, 4, 5, 6]입니다.중첩 리스트 문자열이 주어졌을 때, 이를 평탄화하여 원소들을 순서대로 출력하는 프로그램을 작성하십시오.
[제약 조건]
• 최대 중첩 깊이: $\le 5$
• 정수 원소 총 개수: $\le 1{,}000$
입력 설명
첫째 줄에 중첩 리스트 표현식이 한 줄에 공백 없이 주어집니다.
최대 중첩 깊이는 $5$ 이하이며, 정수 원소의 총 개수는 $1000$ 이하입니다. 리스트 내부에는 정수만 포함되어 있습니다.
최대 중첩 깊이는 $5$ 이하이며, 정수 원소의 총 개수는 $1000$ 이하입니다. 리스트 내부에는 정수만 포함되어 있습니다.
출력 설명
평탄화된 리스트의 원소들을 원래 순서대로 공백으로 구분하여 한 줄에 출력합니다.
입력 예시
COPY
복사되었습니다!
복사되었습니다!
[[1, [2, 3]], [4, [5, [6]]]]
출력 예시
COPY
복사되었습니다!
복사되었습니다!
1 2 3 4 5 6
도움
재귀(Recursion) 함수를 정의하여 해결합니다. 리스트를 순회하면서 원소가 단일 값(정수)이면 결과 리스트에 추가하고, 또 다른 리스트이면 그 리스트에 대해 재귀적으로 함수를 호출합니다. Python의 경우
isinstance(x, list)를 사용하여 타입을 판별할 수 있습니다.