배열 : 원소들을 순서대로 늘어놓은 것
index는 0부터 시작한다.
L = [1,2,3,4,5]
라고 하였을 때 0번째 : 1 , 1번째 : 2, 2번째 : 3으로 볼 수 있다.
L([1]) ==> 2
L([-1]) ==>5
리스트(배열) 연산
1) 원소 덧붙이기
L.append(6)
2) 끝에서 꺼내기
L.pop()
리스트의 끝에서 하나의 원소를 꺼냄 => 리스트도 변화한다.
===> 순삭간에 빠르게 할 수 있는 일
-> 리스트의 길이와 무관(상수시간)
-> O()
리스트(배열) 연산
1) 배열의 중간에 원소를 삽입하기
L.insert(3,65)
=> index 3의 위치(네번째)에 원소 65를 삽입하라.
=> 3번 index를 찾아내 삽입하기전 4번째를 5번째 옮기고 3번째를 4번째 자리로 옮긴 후 3번째에 65를 삽입한다.
=> 시간이 뒤에 덧붙이는 것보다 걸리는 것을 알 수 있다.
2) 원소를 삭제하는 일
del(L[2])
=> 먼저 index 2 의 내용을 먼저 삭제한 후 앞칸으로 한칸씩 옮겨준후 마지막 인덱스를 삭제한다.
=> 옮겨주는 과정이 있기 때문에 시간이 걸리는 것을 알 수 있다.
리스트에서 index 2위치 원소를 삭제하라에서 del(L{(2)]와 L.pop(2) 의 차이점은?
==> 원소 삽입과 원소 삭제는 리스트의 길이가 길면 오래 걸린다.
==> 리스트의 길이에 비례하므로 선형시간이라한다.
==> O(n)
찾고자하는 데이터를 찾을때
L.index() : 괄호 안에 찾을 내용을 적어준다.
문제 : 리스트 L 과 정수 x 가 인자로 주어질 때, 리스트 내의 올바른 위치에 x 를 삽입하여 그 결과 리스트를 반환하는 함수 solution 을 완성하세요.
인자로 주어지는 리스트 L 은 정수 원소들로 이루어져 있으며 크기에 따라 (오름차순으로) 정렬되어 있다고 가정합니다.
예를 들어, L = [20, 37, 58, 72, 91] 이고 x = 65 인 경우, 올바른 리턴 값은 [20, 37, 58, 65, 72, 91] 입니다.
힌트: 순환문을 이용하여 올바른 위치를 결정하고 insert() 메서드를 이용하여 삽입하는 것이 한 가지 방법입니다.
주의: 리스트 내에 존재하는 모든 원소들보다 작거나 모든 원소들보다 큰 정수가 주어지는 경우에 대해서도 올바르게 처리해야 합니다.
<답안>

==> 주의 부분을 꼭 포함하자
예를 들어, L = [64, 72, 83, 72, 54] 이고 x = 72 인 경우의 올바른 리턴 값은 [1, 3] 입니다.
또 다른 예를 들어, L = [64, 72, 83, 72, 54] 이고 x = 83 인 경우의 올바른 리턴 값은 [2] 입니다.
마지막으로 또 다른 예를 들어, L = [64, 72, 83, 72, 54] 이고 x = 49 인 경우의 올바른 리턴 값은 [-1] 입니다.
<답안>

=> for문을 전체를 다 돌아야하기때문에 비효율적인 코드이다.
=> 다른 답안을 참고해 작성해보도록 한다.

==>enumerate를 활용해 인덱스와 값을 한번에 받아오는 것이 가능하므로
이를 활용해 답을 해결할 수 있다.