프로그래머스 파이썬 기초 트레이닝 :: 빈 배열에 추가, 삭제하기 (리스트 단순연산)
문제 설명
프로그래머스 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]
추가 및 삭제를 단순 연산을 하는게 시간복잡도 측면에서 훨씬 효율적
댓글
댓글 쓰기