프로그래머스 파이썬 기초 트레이닝 :: 빈 배열에 추가, 삭제하기 (리스트 단순연산)

     



     

              


    문제 설명 

    프로그래머스 URL

    https://school.programmers.co.kr/learn/courses/30/lessons/181860



    프로그래머스 코딩 카테고리 

    코딩 기초 트레이닝

    Day 19 - (3) 빈 배열에 추가, 삭제하기

    Lv.0



    문제 내용 

    아무 원소도 들어있지 않은 빈 배열 X가 있습니다. 

    길이가 같은 정수 배열 arr과 boolean 배열 flag가 매개변수로 주어질 때, flag를 차례대로 순회하며 

    flag[i]가 true라면 X의 뒤에 arr[i]를 arr[i] × 2 번 추가하고, 

    flag[i]가 false라면 X에서 마지막 arr[i]개의 원소를 제거한 뒤 

    X를 return 하는 solution 함수를 작성해 주세요.



    arr

    [3, 2, 4, 1, 3]

    flag

    [true, false, true, false, false]


    result

    [3, 3, 3, 3, 4, 4, 4, 4]



    -----------------------------------




    내가 푼 코드 

    for문으로 리스트 값 추가 

    리스트에 값을 추가할때 for문 - range 함수를 사용해서, 값을 삭제하거나 추가했다.
    def solution(arr, flag):
        x = []
        for a, f in zip(arr, flag) :
            if f : 
                for i in range(2*a) : 
                    x.append(a)
            else : 
                for i in range(a) : 
                    x = x[:-1]      # x.pop()
        return x






    for문으로 동일한 값을 n번 삭제 / 추가하는걸로 코드를 작성했는데 

    값은 값을 n번 수행할때는 굳이 for문을 쓰지않고, * +  단순 연산으로도 가능하다. 


    다른 코드 

    단순연산 이용하기 

    def solution(arr, flag):
        x = []
        for a, f in zip(arr, flag) :
            if f : 
                x += [a] * a * 2    
            else : 
                x = x[:-a]
        return x


    x += [a] * a * 2 

    x = x[:-a] 

    추가 및 삭제를 단순 연산을 하는게 시간복잡도 측면에서 훨씬 효율적 









    댓글

    이 블로그의 인기 게시물

    [KT 에이블스쿨 - IT 트랜드] 국내외 AI 관련 규제

    KT 에이블스쿨 : 6-7차 미니프로젝트 - 제안서 기반 솔류션 기획 및 설계

    KT 에이블스쿨 : 클라우드 서비스 1일차 정리