Hexs 2023. 4. 14. 14:50
반응형

 

입력

# 공백으로 입력받는법.

import sys

time = list(map(int, input().split()))
time = list(map(int, sys.stdin.readline().split()))

 

BPS, DFS 탐색

rom collections import deque


def dfs(start):
    visit[start] = True
    print(start, end=" ")

    for i in lst[start]:
        if not visit[i]:
            dfs(i)


def bfs(start):
    queue = deque([start])
    visit[start] = True
    while queue:

        v = queue.popleft()
        print(v, end=" ")
        for i in lst[v]:
            if not visit[i]:
                visit[i] = True
                queue.append(i)


N, M, V = map(int, input().split())
lst = [[] for _ in range(N + 1)]
for _ in range(M):
    a, b = map(int, input().split())
    lst[a].append(b)
    lst[b].append(a)

for i in lst:
    i.sort()

visit = [False] * (N + 1)
dfs(V)
print()

visit = [False] * (N + 1)
bfs(V)

 

배열 초기화

lst = [0 for i in range(N)]

 

딕셔너리

# 딕셔너리 쌍 추가.

a = {1: 'a'}
a[2] = 'b'
a
{1: 'a', 2: 'b'}

# 딕셔너리 삭제

del a[1]
a
{2: 'b', 'name': 'pey', 3: [1, 2, 3]}

 

시간 복잡도

리스트

len(a) 전체 요소의 개수를 리턴한다.
a[i] 인덱스 의 요소를 가져온다.
a[i:j] 부터 까지 슬라이스의 길이만큼 개의 요소를 가져온다. 이 경우 객체 개에 대한 조회가 필요하므로 이다.
elem in a elem 요소가 존재하는지 확인한다. 처음부터 순차 탐색하므로 만큼 시간이 소요된다.
a.count(elem) elem 요소의 개수를 리턴한다.
a.index(elem) elem 요소의 인덱스를 리턴한다.
a.append(elem) 리스트 마지막에 elem 요소를 추가한다.
a.pop() 리스트 마지막 요소를 추출한다. 스택의 연산이다.
a.pop(0) 리스트 첫번째 요소를 추출한다. 큐의 연산이다. 이 경우 전체 복사가 필요하므로 이다.
del a[i] i에 따라 다르다. 최악의 경우 이다.
a.sort() 정렬한다. 팀소트(Timsort)를 사용하며, 최선의 경우 에도 실행될 수 있다.
min(a), max(a) 최솟값/최댓값을 계산하기 위해서는 전체를 선형탐색해야 한다.
a.reverse() 뒤집는다. 리스트는 입력 순서가 유지되므로 뒤집게 되면 입력 순서가 반대로 된다.

 

 

딕셔너리

len(a) 요소의 개수를 리턴한다.
a[key] 키를 조회하여 값을 리턴한다.
a[key] = value 키/값을 삽입한다.
key in a 딕셔너리에 키가 존재하는지 확인한다
반응형