[컴퓨터과학 개론] 6강 - 알고리즘(2)
·
🎓방송통신대학교/💻컴퓨터과학 개론
✅ 1. 정렬 알고리즘: 퀵 정렬, 합병 정렬퀵정렬, 합병 정렬 두 가지의 공통 특징은 분할 정복 방법이 적용되는 알고리즘이다.분할 정복 방법은 그냥 단순히 데이터 집합을 쪼개서 분할 해서 정렬 할 때 쓰이는 개념으로 보면 될 듯(1) 퀵 정렬[ 피벗 - pivot, 분할원소 ]두 개의 부분배열로 분할할 때 기준이 되는 특정한 데이터를 의미함.보통 주어진 배열의 첫 번째 원소를 피벗으로 정하긴 함.특정 데이터(피벗)를 기준으로 입력 배열을 두 개의 부분배열로 분할하고, 각 부분 배열에 대해서 독립적으로 퀵 정렬을 순환적으로 적용한다. 라는 개념을 가지고 있는 정렬임.쉽게말해, 입력 배열에서 정렬 기준으로 삼고 싶은 요소를 피벗으로 보고 해당 피벗 데이터를 기준으로 입력 배열을 두 개의 부분 배열로 나눌 ..
[컴퓨터과학 개론] 5강 - 알고리즘(1)
·
🎓방송통신대학교/💻컴퓨터과학 개론
✅ 1. 알고리즘의 개념(1) 알고리즘의 정의주어진 문제를 풀기 위한 명령어들을 단계적으로 나열한 것을 의미 ( 주어진 문제에 대한 풀이 방법 및 절차 )입출력: 0개 이상의 외부 입력, 1개 이상의 출력 생성명확성: 각 명령은 모호하지 않고 단순 명확해야 함유한성: 한정된 수의 단계를 거친 후에는 반드시 종료해야 함유효성: 모든 명령은 컴퓨터에서 실행할 수 있어야 함알고리즘을 충족하기 위해서는 이와 같이 4가지 조건을 만족해야함.알고리즘은 주어진 문제에 대한 효율적인 알고리즘을 구현하는 것을 목표로 하고 있음. ( 실용적 측면에서 효율적이어야 함 )(2) 알고리즘 생성 단계(1) 설계: 문제를 해결하는 아이디어를 구체화하여 알고리즘 형태로 만드는 단계(2) 표현/기술: 설계된 알고리즘을 수도 코드, 순..
[자료구조] 8강 - 스레드트리
·
🎓방송통신대학교/🔢자료구조
✅ 1. 스레드 트리 개념(1) 스레드 트리란?[ 기존 이진 트리의 단점 ]이진 트리: 각 노드가 데이터를 저장하고 최대 두 개의 자식 노드를 갖는 자료구조임.( 또한, 일반 이진 트리는 재귀 또는 스택을 이용해 구현을 할 수 있음. )기존 이진 트리에서 잎 노드의 left/right 포인터가 항상 NULL 이기 때문에 순회(전위, 중위, 후위 방식)를 할 때, 이전의 노드로 돌아가야 하는 경우가 있는데 이때, 재귀 호출마다 함수 호출 스택이 쌓이는 문제점이 발생함.스택 오버헤드: 트리가 깊거나 노드 수가 많아지면 스택 오버플로우가 발생 할 가능성이 높아짐.실행 속도: 함수 호출/복귀 비용이 반복되어 실행 속도가 느려질 수 있음.[ 스레드 트리 ]스레드 트리: 위와 같이 이진 트리의 단점을 보완하고자, ..
[C언어] 배열과 포인터(1)
·
🛠️Backend/⚙️C
✅ 1. 배열의 개념(1) 배열(array) 이란?여러 개의 동일한 자료형의 값을 연속적인 메모리 공간에 저장하고, 이를 하나의 이름으로 관리할 수 있도록 만든 변수임.각각의 배열 요소는 0번부터 시작해 차례로 부여된 번호(인덱스)를 이용하여 액세스 함배열의 차원: 배열의 요소가 나열되는 구조이며, 1차원, 2차원, 3차원 ... 등이 있음.위와 같이 자료의 최댓값을 구하는 예시가 있다고 가정하면, 변수만 가지고 데이터를 저장 할 경우 최댓값을 찾을 때 위와 같이 하나씩 전체를 비교해야 한다. 이러한 과정은 매우 비효율적임. 그래서 배열을 사용함.✅ 2. 1차원 배열(1) 1차원 배열 - 선언위와 같이 동일한 자료형의 배열명을 통해 독립적으로 개수를 지정해 배열의 크기를 지정해서 만들 수 있음.int a..
[C언어] 함수와 기억 클래스(2)
·
🛠️Backend/⚙️C
✅ 1. 매개변수를 통한 자료 전달(1) 함수의 호출과 자료 전달함수 호출: 처리에 필요한 자료를 피호출 함수의 매개변수에 전달함 -> sum(10, 20); 복귀: 처리 결괏값을 함수 호출식의 값으로 반환함 -> return z;(2) 값에 의한 자료 전달C 언어의 기본적인 자료 전달 방식이다.C 언어는 함수를 호출시 매개변수 전달은 실 매개변수의 값을 형식 매개변수에 복사하는 방식으로 동작함.이유는, 실 매개변수와 형식 매개변수의 공간이 다르기 때문에 값만 복사해서 넣어주는 것임. 즉, 주소값이 달라서임.즉, 변수간의 주소값이 다른데, 서로 영향을 받지 않도록 하기 위해서 복사를 하는 것임.(3) 참조에 의한 자료 전달#include void modify(int *ptr) { *ptr = 99;..
[C언어] 함수와 기억 클래스(1)
·
🛠️Backend/⚙️C
✅ 1. 함수의 개념(1) 함수(function) 란?함수란, 특정한 작업을 수행하도록 설계된 독립적인 코드 블록을 의미한다.함수에 코드 블록에 정의된 코드를 사용하기 위해서는 함수를 호출하여 사용할 수 있음.매개변수를 통해 함수에 데이터를 전달 할 수 있음.작업을 완료하면 호출한 곳으로 복귀 즉, return 을 하게 됨.복귀할 때 결과값을 반환할 수 있음.C 프로그램은 함수를 기본 단위로 하여 구성이 됨.(2) 함수의 특성[ 함수의 장점 ]크고 복잡한 프로그램을 작은 크기의 의미 있는 작업 단위로 분할하여 구성할 수 있음.간결하고 이해하기 쉬우며 유지 관리가 쉬워질 수 있음.반복 사용되는 코드의 중복을 최소화 할 수 있음.잘 설계된 함수는 다른 응용에서 재사용할 수 있음.[ 함수의 단점 ]함수 호출과..
[자료구조] 7강 - 트리
·
🎓방송통신대학교/🔢자료구조
✅ 1. 트리의 개념(1) 트리의 정의트리는 계급적인 특성을 가지는 계층화를 통해 검색을 편리하게 하기 위한 자료구조로 볼 수 있음.✅ 2. 트리의 표현 방법(1) 트리의 구성노드: 트리의 항목/트리에 저장되는 데이터의 묶음이다. 쉽게말해, 위 이미지에서 A, B, C... 각각을 의미 할 수 있음.부모노드: 상하 계층구조 및 직접연결 된 노드 구조에서 해당 노드의 상위계층을 부모 노드라고 함.자식노드: 부모노드와 반대로 특정 노드의 하위계층을 자식노드라고 함.( 특징은 부모노드와 자식노드는 직접 연결된 구조에서만 가능하므로 부모는 반드시 노드 1개가 될 수 있음. )루트노드: 트리의 최상휘 노드로 부모가 없는 노드로 볼 수 있다.서브트리: 부모 노드를 삭제하면 생기는 트리들을 의미한다. 쉽게말해, B의..
[C언어] 선택 제어문과 반복 제어문
·
🛠️Backend/⚙️C
✅ 1. C 언어의 흐름 제어(1) C 언어의 기본 - 문장 흐름[ 문장(statement) ]선언이나 실행을 지시하는 표현의 기본 단위선언문: 자료형, 변수 등을 선언하는 문장이다. 예: int a;실행문: 동작을 수행하도록 지시하는 문장이다. 예: a += 10;실행문은 함수 안에만 작성할 수 있음.모든 문장은 세미콜론(;)으로 끝을 표시함실행문은 나열된 순서에 따라 순차적으로 실행됨흐름 제어문에 의해 순차적 흐름을 바꿀 수 있음.(1) C 언어의 기본 - 흐름 제어 구조프로그램을 작성할 때 일반적으로 사용하는 것이 위에서부터 차례대로 순차구조, 선택구조, 반복구조 이다.이 세가지가 대표적으로 쓰이는 흐름 제어 구조이다.✅ 2. 선택 제어문(1) 선택 제어문이란?지정된 조건에 따라 특정 위치로 이동하..
[자료구조] 6강 - 연결 리스트의 응용
·
🎓방송통신대학교/🔢자료구조
✅ 1. 연결 리스트의 변형(1) 단순 연결 리스트의 문제점단순 연결 리스트는 하나의 링크만 있고, 각각의 노드의 링크는 후행 노드만을 가리키는 구조이다.즉, 특정 노드의 후행 노드는 쉽게 접근할 수 있지만, 특정 노드의 선행 노드에 대한 접근은 헤드 노드부터 재검색을 해야 하는 문제가 있음. 이것을 해결하기 위해 연결 리스트를 변형한 형태가 만들어짐.연결 리스트 변형은 위이미지와 같이 이중 연결 리스트, 단순 원형 연결 리스트가 될 수 있음.(2) 이중 연결 리스트란?기존 단순 연결 리스트는 후행 노드만을 가리키는 link 만 있음.이중 연결 리스트는 두 개의 link 를 가지고 있으며 각각 선행 노드, 후행 노드의 링크를 가지고 있게 됨.결과적으로 후행 노드를 가리킬 수 있어, 소스 코드가 간단해지고..
[C언어] 입출력 함수와 연산자(2)
·
🛠️Backend/⚙️C
✅ 1. 산술 연산자(1) 연산자의 개념(2) 산술 연산자사칙연산을 포함한 산술 연산을 수행하는 연산자를 의미한다.피연산자가 1개 일땐 단항 연산자, 2개 이상일 땐 이항 연산자로 구분됨.[ 이항 연산자 ]연산자간 덧셈으로 자료형의 범위를 벗어나는 오버플로가 일어나지 않도록 주의해야 함나눗셈의 제수 즉, x 나누기 0 는 불가능 함.정수형에만 사용이 가능한 연산자이다.나머지의 정의는 정수의 소수점 아래를 버리는 방식으로 됨.[ 이항 연산자 예시 ][ 단항 연산자 ]✅ 2. 관계 연산자와 논리 연산자(1) 불 값의 표현(2) 관계 연산자[ 관계 연산자의 사용 예 ]a 가 4 인 경우 a > 2 에 대한 값으로는 참 값인 1 이 들어가게 된다. 반대로 거짓일 경우 0 이 들어간다.[ 정리 ]관계 연산자는 대..