본문 바로가기

CS3

DFS 깊이 우선 탐색(DFS) Depth-First Search 탐색하려는 노드의 자식 노드부터 우선 탐색하는 방식 한개의 큐와 한개의 스택으로 구현 방문해야하는 노드 저장 스택(LIFO) 이미 방문한 노드를 저장하는 큐 (FIFO) 1. 탐색 노드 큐에 스택에 담기 2. 스택에 마지막 값을 추출해 큐에 존재하는지 확인 3. 큐에 존재하면 존재하지 않는게 나올때까지 확인 후 큐에 추가 4. 큐에 추가된 값의 연결된 간선들 모두 스택에 추가 * 스택이 빌때까지 2번부터 반복 func DFS(graph: [String: [String]], start: String) -> [String] { var queue: [String] = [] var stack: [String] = [start] while !stack.i.. 2023. 12. 13.
[CS] 런타임 vs 컴파일타임 컴파일 (compile-time) - 우리가 작성한 소스코드를 컴퓨터가 이해하고 실행할 수 있는 형태로 변환하는 과정 - 변수 할당, 타입 확인 런타임(runtime) - 프로그램이 사용자 또는 시스템에서 실행되는 시간 - 사용자 입력 처리 , 메모리 할당, 동적 타입 확인 순서 -컴파일타임 1. 우리가 직접 소스코드 작성 2. 컴파일러에게 '컴파일 해줭' 2-1) 오류 검출 2-2) 코드 최적화 2-3) 기계어 코드로 변환 - 0, 1로 이루어짐 8B 45 FC mov eax,DWORD PTR [ebp-4] 83 C0 02 add eax,2 89 45 F8 mov DWORD PTR [ebp-8],eax 2-4) 실행가능한 파일로 생성 -런타임 3. 운영체제에서 실행해 컴파일된 파일이 실제 메모리에 올라.. 2023. 6. 28.
[Swift] 메모리구조 - 코드, 데이터, 힙, 스택 (Code,Data,Heap,Stack) 우리가 작성하는 코드 덩어리들을 프로그램이라고 함 이 프로그램을 실행하면 운영체제(Operating System)에서 메모리(RAM)에 프로그램을 위한 공간을 할당해줌 이때 메모리 공간은 코드, 데이터, 힙, 스택 으로 나누어 공간을 할당 할 수 있도록 함 Code 코드영역 - 우리가 작성한 소스코드가 0,1로 이루어진 컴퓨터 밑단위 언어인 기계어 형태로 저장됨 - 실행파일을 구성하는 명령어들이 올라감 (함수, 제어문, 상수 등) - 컴파일 타입에 의해 결정 - 프로그램을 실행했는데 중간에 코드가 변경된다고 해서 프로그램이 변경 되면 안되어 Read-Only형태로 저장 Data 데이터영역 - 전역변수, static 변수가 저장됨 - 프로그램 시작과 동시에 할당되고 프로그램이 종료되어야 메모리가 해제됨 -.. 2022. 9. 20.