Front-end Developer
알고리즘 : 선형 배열(Linear Arrays) 본문
개념
선형 배열은 데이터들이 일 직선으로 나열되어있는 형태를 말합니다. Python에서는 여러가지 데이터들을 줄지어서 나열시킬 수 있는 리스트(list)가 있습니다.
알고리즘을 할 때 리스트에서 사용할 수 있는 연산들이 있습니다. 리스트 길이와 관계없이 빠르게 실행되는 연산 그리고 리스트의 길이에 비례해서 시간이 걸리는 연산, 크게 이 두가지 종류의 연산들이 있습니다. 그리고 마지막으로 list index 개념에대해서 이야기해보겠습니다.
리스트 길이에 관계없이 실행 속도가 빠른 연산
-
.append() : 데이터를 리스트에 덧붙일 때 사용됩니다. 추가된 데이터는 리스트 맨 뒤에 자리에하게 됩니다.
-
.pop(): 리스트 맨 끝에 있는 데이터를 밖으로 빼올 때 사용할 수 있습니다.
리스트 길이에 비례해서 실행되는 연산
-
.insert(): 리스트에 원하는 데이터를 원하는 자리에 넣을 수 있습니다.
-
예) list.insert( index_number, 데이터 )
-
-
del: 리스트에서 삭제하고 싶은 데이터를 데이터의 index 넘버를 사용해서 삭제할 수 있습니다.
-
예) del list[index_number]
-
리스트 [index]
index는 리스트안에있는 데이터들이 차례대로 줄지어 있는데 어떤 데이터가 전체 데이터에서 몇번째에 있는지 알려줄 때 사용한다. index는 index와 negative index 두가지 종류가 있습니다.
index
-
list 앞에서부터 데이터 순서를 센다.
-
0부터 순서를 센다.
-
index()연산은 괄호안에 데이터를 쓰면 그 데이터 index를 알려준다.
-
예) list.index(데이터)
-
negative index
-
list 뒤에서부터 데이터 순서를 센다.
-
-1부터 순서를 센다.
문제
리스트 L 과 정수 x 가 인자로 주어질 때, 리스트 내의 올바른 위치에 x 를 삽입하여 그 결과 리스트를 반환하는 함수 solution 을 완성하세요. 인자로 주어지는 리스트 L 은 정수 원소들로 이루어져 있으며 크기에 따라 (오름차순으로) 정렬되어 있다고 가정합니다.
주의: 리스트 내에 존재하는 모든 원소들보다 작거나 모든 원소들보다 큰 정수가 주어지는 경우에 대해서도 올바르게 처리해야 합니다.
문제 풀이
def solution(L, x):
for i in range(len(L)):
if L[i] > x:
L.insert(i,x)
break
if L[0] > x:
L.insert(0, x)
if L[-1] < x:
L.append(x)
answer = L
return answer
반복문 안에 if 구문을 사용할 때 굳이 else를 쓰지 않아도 if 구문 조건에 만족하지 않았을 때 반복문이 이어서 계속 실행된다는걸 배웠다.
문제에 주의부분이 없었으면 풀 수 있었을까? x 가 리스트 맨 앞이나 맨 끝에 올 수도 있다는 생각을 할 수 있어야겠다.
마지막으로 for in 반복문에 range를 사용했을 때 i가 0부터 시작하는것도 기억해둬야겠다.
'알고리즘' 카테고리의 다른 글
백준 알고리즘 11729 [파이썬] (0) | 2021.03.09 |
---|---|
백준 알고리즘 1929 [파이썬] (0) | 2021.03.09 |
백준 알고리즘 1157 [파이썬] (0) | 2021.03.06 |
백준 알고리즘 4344번 [파이썬] (2) | 2021.03.06 |
알고리즘 : 정렬(Sort), 탐색(Search) (0) | 2021.02.23 |