목록✅🌲강의 복습 노트 (65)
컴퓨터공학 💻 도서관📚

선택 정렬 처리되지 않은 데이터 중에서 가장 작은 데이터를 선택해 맨 앞에 있는 데이터와 바꾸는 것을 반복합니다 내가 쓰던 선택 정렬과 본질은 같지만 형태만 다른 코드본질 : 0번째 인덱스에 가장 작은 수를 넣기여기선 가장 작은 수가 있는 인덱스 번호를 찾는 방식이다 파이썬에서 변수 스와프 하는 방법array[i], array[min] = array[min], array[i] c++ 표준 라이브러리에서 제공하는 swap 함수 삽입 정렬 처리되지 않은 데이터를 하니씩 골라 적절한 위치에 삽입한다 (데이터를 하나씩 확인하면서 이 데이터가 어느 위치에 들어가는게 맞는지 매번 계산한다) 선택정렬에 비해 구현나이도가 높은 편이지만, 일반적으로 더 효율적으로 동작한다 i 번째 요소가 좌측..

queue.append((x,y)) : 2차원 튜플을 큐에 추가return graph[n-1][m-1] : print(bfs(0,0)) (0,0) 을 대입했기 때문에 graph 배열 인덱스도 [n-1][m-1] 처럼 - 1 해줘야 한다 실제로는 bfs 함수가 main 함수 위에 있어야 한다

(파이썬에서는 함수에 사용된 변수or 배열이 함수보다 아래에 있는데 정상적으로 되더라) ( ex. graph[][] ) (C언어에서는 함수 안에 있는 변수들은 전역변수로 따로 선언하지 않은 이상 다 지역변수여서 다 각각 선언을 해줘야 한다)(C언어에서는 함수에서 main함수에 있는 변수, 배열을 사용하고 싶으면 포인터를 이용해서 매개변수로 받아야 된다) dfs(x-1, y) 포함 4개 방향 코드 --> 코드 수행하고 혼자 반환하고 끝 --> [ 이 반환은 dfs(i, j)의 반환이 아니기에if dfs(i,j) == True: 이 코드에 영향을 주지 않는다 ] 대신 인접 노드의 값이 0이면 1로 바꾸는 효과가 있음 --> 그래서 그래프 형태에서 0이 인접한 덩어리를 1번만 셀 수 있다(와...

BFS 유형은 최단 거리 유형의 문제에 활용되기도 한다 모든 작업이 끝나면 큐 안은 비워져 있다. BFS 코드 예제 : DFS 와 마찬가지로 BFS 도 0번 인덱스를 비워두고, visited 배열의 요소를 9개로 선언한다 파이썬 예제queue = deque([start]) # 시작 노드를 큐에 넣어준다 파이썬 deque 를 출력해보면 deque([1,2]) 이런 형태로 출력이 된다. (큐의 요소 하나가 리스트 하나인 느낌) while queue # 큐가 참일 때 --> 큐가 0이 아닐 때 --> 큐가 비어있지 않을 때 (popleft 함수는 반환까지 하는 함수인듯) c++ 예제c++ 에서 인접리스트 방식으로 그래프를 구현하고자 하면 vector를 이용해서 특정..

DFS 동작 예시: 스택 자료구조인 경우방문 기준: 번호가 낮은 인접 노드부터 DFS 코드 자바 예제 : 스택 자료구조를 사용한 경우 강의 영상 예시처럼 1 2 7 이렇게 스택에 쌓이는 코드import java.util.*;public class DFSVisitAllPeek { public static void main(String[] args) { int n = 8; // 그래프 초기화 List> graph = new ArrayList(); // 객체 배열 (방만 생겨서 직접 넣어줘야 함) for (int i = 0; i ()); // 객체 배열의 각 요소가 독립적인 객체가 되어야 하기 때문에 각각의 것을 직접 넣어줌 } ..

재귀함수 : 자기 자신을 호출(반환)하는 함수 재귀함수는 종료 조건을 꼭 명시해야 한다 재귀함수 예제 : 팩토리얼, 최대공약수 계산 def factorial(n): # 팩토리얼 계산 if n == 1: # 종료조건 : if로 명시 return 1 return n * factorial(n-1) # 재귀 : else + return과 함께 자기자신을 호출 (여기선 점화식)N = int(input())print(factorial(N)) 모든 재귀함수는 반복문을 이용하여 동일한 기능을 구현할 수 있다 재귀 함수가 반복문보다 유리한 경우도 있고 불리한 경우도 있다 컴퓨터가 함수를 연속적으로 호출하면 컴퓨터 메모리 내부의 스택 프레임에 쌓입니다..

큐 : 터널, 주유소 큐는 먼저 들어온 데이터가 먼저 나간다 파이썬 큐 : 리스트도 기능적으로는 구현할 수 있지만 시간복잡도가 더 높아서 비효율적임, 덱 / deque 라이브러리 쓰셈 리스트로 큐를 구현할 시pop함수를 사용하면 원소를 꺼낸 뒤 원소의 위치를 조정하는 과정이 필요해서원소를 꺼내는 연산 자체가 O(K)만큼의 시간복잡도가 요구된다. 그래서 비효울적이다. append, popleft 함수 여기서 append 함수는 파이썬 내장함수 append함수와 똑같이 구동하기 때문에 요소를 오른쪽 끝에 추가한다. 그렇기 때문에 삭제하는 함수가 왼쪽부터 삭제하는 popleft 이다. 그래서 우리가 익숙한 순서로 출력하려면 역순으로 바꾸고 출력한다 C++ 큐 : push, pop, ..

스택 : 프링글스 통스택은 먼저 들어온 데이터가 나중에 나간다 파이썬 스택 : 리스트와 파이썬 내장함수 append, pop 사용 C++ 스택 : 라이브러리 활용해서 push, pop, top 함수 사용이 코드에서는 top을 출력하고 삭제하고 다음 top을 출력하고 삭제하는 식으로 스택 출력을 했다. 자바 스택 : 라이브러리 활용해서 push, pop, peek 함수 사용 이 코드에서는 top을 출력하고 삭제하고 다음 top을 출력하고 삭제하는 식으로 스택 출력을 했다.