본문 바로가기

Python

[Python/level 0] 빈 배열에 추가, 삭제하기 - 181860, enumerate, extend, del

문제 설명

아무 원소도 들어있지 않은 빈 배열 X가 있습니다. 길이가 같은 정수 배열 arr과 boolean 배열 flag가 매개변수로 주어질 때, flag를 차례대로 순회하며 flag[i]가 true라면 X의 뒤에 arr[i]를 arr[i] × 2 번 추가하고, flag[i]가 false라면 X에서 마지막 arr[i]개의 원소를 제거한 뒤 X를 return 하는 solution 함수를 작성해 주세요.

 

code  - 1차

def solution(arr, flag):
    result = []
    
    for i in range(len(arr)):
        if flag[i]:
            result += [arr[i]]*2*arr[i]
        else:
            result = result[:-arr[i]]
    
    return result

 

code  - 2차

def solution(arr, flag):
    x = []
    for idx, f in enumerate(flag):
        if f:
            x.extend([arr[idx]] * 2 * arr[idx])
        else:
            del x[-arr[idx]:]
    return x
  • x 리스트에 대해 반복적으로 += 확장하고, 슬라이싱을 수행하는 대신 리스트 extend와 del을 사용하여 한번에 확장 및 삭제하는 방식으로 코드 리팩토링하였습니다.

 

반응형