Keyword: 배열, 문자열/ 반복문과 재귀함수/ 복잡도(BigO, 시간, 공간)/ 정렬/ 완전탐색/ 이분탐색/ 분할정복/ 스택/ 큐/ 우선순위 큐/ Linked List/ 해시테이블자료구조: 데이터를 저장/조작/관리하는 방법배열/문자열/연결리스트/스택/큐/우선순위큐
전역변수 선언 globaljoin 함수: 배열을 문자열로 묶어줌 (int형을 쓰려면 str형으로 변환해줘야 함)deque: 파이썬은 모듈 제공 (from collections import deque) deque 쓰면 앞이랑 뒤에서 모두 삽입/삭제가 가능(left/ri
비선형 자료구조: 데이터를 일렬로 구성하지 않고, 자료 순서/관계를 계층적으로 구성한 자료구조 (ex. 트리/그래프/해시 테이블 etc) 1. 그래프 : 정점(Vertex)과 간선(Edge)로 이루어진 자료구조로, 정점 간 관계를 표현하는 조직도(ex. 최단 경로)
1. 깊이 우선 탐색(DFS, Depth-First Search): 루트 노드(or 임의 노드)에서 시작해 다음 분기로 넘어가기 전 해당 분기를 완벽하게/깊게 탐색 >[구현 과정] 먼저 시작 노드를 방문처리 해주고 해당 노드에 인접한 노드들을 재귀로 탐색/방문처리(
3. 위상 정렬 : 사이클이 없는 방향 그래프의 모든 노드를 방향성에 거스르지 않도록 순서대로 정렬하는 알고리즘 (이 때, 시작 노드는 아무거나 될 수 없고, 진입 차수가 0인 노드만 가능!) 진입 차수(In-degree): 특정한 노드로 들어오는 간선의 개수 진출 차
Dijkstra : 그래프에서 한 정점(노드)에서 다른 모든 정점까지의 최단 경로를 구하는 알고리즘, 이 때 도착 정점 뿐 아니라, 그 과정에서 모든 다른 정점까지 최단 경로로 방문하며 각 정점까지의 최단 경로를 모두 찾게 된다. (매번 최단 경로의 정점을 선택해 탐색
1. 트리(Tree) : 그래프의 일종으로 정점/간선을 이용해 데이터의 배치 형태를 추상화한 자료구조 서로 다른 두 노드를 연결하는 길이가 하나뿐인 그래프로, 힙을 구현하는 방법 중 하나 👉🏻 [특징] 대상 정보의 각 항목들을 계층적으로 구조화할 때 사용하는 비선
1. 다이나믹 프로그래밍(동적계획법) : 복잡한 문제를 여러 개의 하위 문제로 나눈 후, 그걸 결합해 최종 문제를 해결하는 것 이 때 각 하위 문제의 답을 table에 저장하고 같은 하위 문제가 나타나면 table에 있는 답 활용 분할 정복과의 차이점: 문제를 잘게
: 선택의 순간마다 지금 당장 최적의 답을 선택하는 과정을 반복해 결과를 도출하는 방법순간 가장 최선의 선택을 하는 기법이기 때문에 지역적(local)으로는 최적의 선택이지만, 이를 반복하더라도 전역적(global)로는 최적의 해가 아닐 수도 있다순간마다 최선의 선택을
LCS(Longest Common Subsequence): 최장 공통 부분 수열
Knapsack Problem
: 문제를 나눌 수 없을 때까지 하위 문제로 나누어, 각각을 해결하고 그 결과를 이용해 전체 문제의 답을 얻는 방법상위의 해답을 구하기 위해 아래로 내려가면서 해답을 구하는 하향식 접근법 -> 재귀로 구현문제를 잘게 쪼갤 때, 부분(하위) 문제는 서로 중복되지 않음\*
C언어는 '절차지향적' 언어, 차례로 소스 코드를 해석&실행함: 가장 큰 차이점은 메모리 할당의 여부선언(declaration)컴파일러에게 변수의 정보만 줌실제 메모리 사용X, 어떠한 변수가 있다는 정보만 있고 실제 데이터는 없음정의(definition)컴파일러에게 실
배열도 포인터와 유사한 개념\-> 한 가지 자료형을 연속적으로 나열하는 것c언어는 배열 요소/변수의 값을 알아서 초기화해주지 않음배열의 이름은 사실 배열이 저장된 메모리의 시작 주소(초기화 이후 주소 값 변경X)call by value: 값에 의한 호출 -> 함수에 인
Krafton Jungle week04 과제 Linked List Stack and Queue Binary Tree Binary Search Tree c언어로 구현하기
균형 이진 트리(Balanced Binary Tree): 모든 노드의 좌우 서브 트리 높이가 1이상 차이나지 않는 트리균형 이진 탐색 트리(Balanced Binary Search Tree): 노드의 삽입/삭제가 일어날 때 균형을 유지하도록 하는 트리Ex) AVL-Tr
AVL-Tree는 노드를 삽입/삭제할 때마다 균형을 유지하기 위해 회전을 다수 수행함반면 RB-Tree는 적절한 색 변경 및 회전을 통해 균형을 유지하기 때문에 더 효율적임RB-Tree는 AVL-Tree보다 좀 더 느슨한 균형 조건을 가짐AVL-Tree는 각 노드의 서
링킹(Linking): 여러개의 코드+데이터를 모아 연결해, 메모리에 로드/실행될 수 있는 하나의 파일로 만드는 작업컴파일 시 수행되며 ‘소스코드->머신코드’ 번역을 수행링킹의 역할독립적인 컴파일을 가능하게 함큰 규모의 응용 프로그램을 한 개의 소스파일로 구성하지만,
제어 이동: PC값을 하나씩 증가시키며 순서대로 인스트럭션을 실행시키는 것제어흐름: 제어이동의 배열간단한 유형의 제어흐름은 ‘점진적인’ 순서로 각 인스트럭션이 나란히 인접해 있는 경우다.점진적인 흐름에 갑작스런 변화가 생기는 건 각 인스트럭션이 인접해 있지 않는 경우인
묵시적(Implicit) 형변환컴파일러에 의해 자동으로 형변환이 이루어지는 것표현 범위가 작은 데이터 타입 -> 큰 데이터 타입으로의 변환만 허용함ex) int a + float b => int형은 float형으로 묵시적 형변환이 이루어짐명시적(Explicit) 형변환
: 프로세스들은 cpu와 메인 메모리를 다른 프로세스들과 공유한다.\-> 이 때 메인 메모리를 공유하다보면 프로세스들의 속도가 느려지거나, 실행하지 못 하게 될 수도 있고, 메모리는 손실에도 취약하다.메모리를 보다 효율적으로 관리하기 위해 현대의 시스템에서는 가상메모리
OSI 7계층: 네트워크 통신이 일어나는 과정을 7단계로 나눠 정의한 네트워크 표준 모델7계층(응용): 응용 프로세스와 직접 관계해 응용 서비스 수행 (사용자와의 인터페이스 제공)6계층(표현): 전달하거나 받는 데이터의 표현방식을 결정 (데이터 변환, 압축, 암호화 등
: 컴퓨터 시스템에서 물리 메모리의 한계를 극복하고 효율적인 메모리 관리를 위해 사용되는 기술등장 배경컴퓨터의 실제 물리 메모리(RAM)은 한정되어 있어 많은 프로그램을 동시 실행하기 어렵다.하드 디스크를 이용해 이를 실제 메모리처럼 사용해 더 많은 프로그램이 실행될