배열
원소들을 순서대로 늘어놓은것 (파이썬 list)
(주로 인덱스는 0부터 시작)
파이썬 list의 특징
여러 타입의 데이터라도 배열을 만들 수 있다
각 원소의 길이가 같지 않아도 된다
리스트 연산
1. 원소 덧붙이기 : list.append(원소)
1,2 는 리스트의 길이와 무관한 시간(상수시간)으로 동작한다 O(1)
3,4 는 리스트의 길이에 비례하는 시간으로(선형시간)으로 동작한다 O(n)
여기엔 append index insert의 작동원리와 구조를 통해서 시간복잡도를 정리
pop은 파라메타값을 인덱스를 가지는 원소를 삭제하고 반환하지만 del은 반환 없이 삭제함 그런 특징때문에 del의 실행시간이 pop 보다 빠름
단, 인덱스가 -1 인경우, 파이썬 리스트는 원소를 삭제하면 삭제된 원소의 뒷 원소들을 앞으로 당기는 연산을 수행하기 때문에 pop의 파라메타값이 비어있을경우에는 pop은 리스트를 순회하지 않고 작동하기 때문에 상수 시간의 시간복잡도를 가진다
del의 경우도 -1번 인덱스의 원소를 삭제 할시 시간복잡도는 O(1)이다
append는 리스트의 맨 마지막에 추가하는 개념이고 insert는 중간에 삽입하는 개념이다 마찬가지로 값을 추가 하고 한칸씩 밀어 줘야 하기에 시간이 선형시간이 걸린다
def solution(L, x):
cnt = 0
for i in L:
if i < x:
cnt +=1
else:
answer = L
answer.insert(cnt,x)
return answer
def solution(L, x):
answer = []
for i in range(len(L)):
if L[i] == x:
answer.append(i)
if len(answer) == 0 :
return [-1]
return answer
함수 여려워잉