본문 바로가기
알고리즘/알고리즘

알고리즘1

by 놀러와요 2024. 4. 19.
반응형

인덱싱(Indexing) - 인덱스 값을 입력하여 리스트의 특정한 원소에 접근하는 것

슬라이싱(Slicing) - 리스트에서 연속적인 위치를 갖는 원소들을 가져올 때 사용하는 기능.

a = [1,2,3,4,5,6,7]

print(a[1:4])

# RESULT
[2,3,4]

슬라이싱 구동 방법.

 

리스트 관련 기타 메서드

메서드 명 사용법 설명 시간 복잡도
append() 변수명.append() 리스트에 원소를 하나 삽입할때 사용 O(1)
sort() 변수명.sort(), .sort(reverse= True) 1. 오름차순 정렬
2. 내림차순 정렬
O(NlogN)
reverse() 변수명.reverse() 리스트의 원소 순서를 모두 뒤집어 놓음 O(N)
insert() 변수명.insert(삽입할 위치 인덱스, 삽입할 값) 특정한 인덱스 위치에 원소를 삽입할때 사용 O(N)
count() 변수명.count(특정 값) 리스트에서 특정한 값을 가지는 데이터의 개수를 셀때 사용 O(N)
remove() 변수명.remove(특정 값) 특정한 값을갖는 원소를 제거하는데, 값을 가진 원소가 여러개면 하나만 제거 O(N)

 

파이썬 append() 함수는 O(1)인데 반해 insert()는 동작이 느리다.

중간에 원소를 삽입한 뒤에, 리스트의 원소 위치를 조정해 줘야 하기 때문이다. 따라서 이 함수를 남발하면 '시간초과'로 통과 못할수도 있다.

remove() 함수는 하나만 삭제가 가능하다. 그럼 몇개 단위로 삭제를 하려면 어떻게 하면 될까? 

다른 언어에서는 remove_all() 과 같은 함수들이 있지만, 파이썬에는 존재하지 않는다. 

 

다음과 같은 방법을 사용하면 좋다.

a = [1,2,3,4,5,5]
remove_set = {3,5}

# remove_set에 포함되지 않는 값만 저장
array = [i for i in a if i not in remove_set]
print(array)

아예 원하지 않는 숫자들을 저장해논뒤 그것만 입력 안시키게 하면 된다.

 

튜플 자료형

튜플은 한 번 선언된 값을 변경할 수 없다.

리스트는 대괄호를 이용하지만, 튜플은 소괄호를 이용한다.

 

튜플 자료형은 그래프 알고리즘을 구현할 때 자주 사용된다.

 

집합 자료형

집합 자료형은 중복을 허용하지 않는다. 또한 순서가 없다. 순서가 없기 때문에 인덱싱 값을 얻을 수 없다는 특징이 있다.

특히 '특정한 데이터가 이미 등장한 적이 있는지 여부'를 체크 할 때 매우 효과적이다.

 

집합 자료형의 연산

기본적인 집합 자료형의 연산으로는 합집합, 교집합, 차집합 연산이 있다.

a = set([1,2,3,4,5])
b = set([3,4,5,6,7])
print("집합 자료형 연산")
print(a | b) # 합집합
print(a & b) # 교집합
print(a - b) # 차집합

 

집합 자료형 관련 함수

data = set([1,2,3])
print(data)

# 새로운 원소 추가
data.add(4)
print(data)

# 새로운 원소 여러개 추가
data.update([5,6])
print(data)

# 특정한 값을 갖는 원소 삭제
data.remove(3)
print(data)

이때 add(), remove() 함수는 모두 시간 복잡도가 O(1)이다.

 

 

출처: https://itlearning.tistory.com/entry/TIL-20210523 [Write Code:티스토리]

반응형

'알고리즘 > 알고리즘' 카테고리의 다른 글

알고리즘4  (0) 2024.04.19
알고리즘3  (1) 2024.04.19
알고리즘2  (0) 2024.04.19
알고리즘 시간 복잡도  (0) 2024.04.19