SOLID BASIC

    [알고리즘] 버블정렬

    버블정렬은 리스트를 검사하여 두 인접한 원소가 오름차순 정렬에 맞지 않으면 이들을 서로 교환하는 알고리즘 입니다. a[1], a[2] 비교 및 교환 a[2], a[3] 비교 및 교환 a[3], a[4] 비교 및 교환 . . . a[n-1], a[n] 비교 및 교환 이 과정을 반복하면 가장 큰 원소가 배열의 n 위치로 끓어 오르게 되는데, 이것이 첫 번째 패스 입니다. 두 번째 패스에서는 다시 배열의 처음부터 인접한 원소를 비교하여 순서가 맞지 않을 경우 교환하면서 검사합니다. 이 때는 마지막 비교가 a[n-2] 와 a[n-1]이 됩니다. // 이미 가장 큰 원소는 가장 오른쪽에 들어가 있기 때문입니다. 이 패스는 배열에서 두 번째로 큰 원소를 n-1의 위치로 끓어 오르게 합니다. 이 정렬은 가장 큰 원소..

    [알고리즘] 선택 정렬 알고리즘

    선택정렬 선택 정렬은 여러 개의 데이터가 무작위로 있을 때 전체 데이터에서 매번 가장 작은(또는 가장 큰) 데이터를 선택하여 데이터 간의 위치를 변경하는 과정을 반복하여 데이터를 오름차순(또는 내림차순)으로 정렬할 때 사용합니다. 선택 정렬의 종류는 2가지로 나눌 수 있습니다. 최소 선택 정렬(Min-selection sort): 매번 가장 작은 데이터를 선택하고 데이터 간의 배치를 변경하며 오름차순으로 정렬 최대 선택 정렬(Max-selection sort): 매번 가장 큰 데이터를 선택하고 데이터 간의 배치를 변경하며 내림차순으로 정렬 선택정렬은 어떻게 동작하는가? 최소 선택 정렬의 경우 구체적인 동작 과정은 다음과 같습니다. 1. 전체 데이터에서 가장 작은 데이터를 선택하고 맨 앞에 있는 데이터와 ..

    [C언어]  다음 변환 지정자에 해당하는 'scanf_s' 에 대한 정수 인수가 없습니다

    [C언어] 다음 변환 지정자에 해당하는 'scanf_s' 에 대한 정수 인수가 없습니다

    과제를 풀다가 다음과 같은 문제가 발생했다. 해결 방법: scanf_s에서 %c를 사용하려면 입력받을 변수의 메모리 크기를 지정해주어야 한다. ex) scanf_s("%c", &oper, 1);

    [알고리즘] 정렬 알고리즘 정리 | 버블 정렬, 삽입 정렬, 선택 정렬, 합병 정렬, 퀵 정렬

    [알고리즘] 정렬 알고리즘 정리 | 버블 정렬, 삽입 정렬, 선택 정렬, 합병 정렬, 퀵 정렬

    컴퓨터 공학부 3학년 전공필수 과정인 알고리즘을 공부하면서, 추가적인 이해가 필요하다 판단하여 포스탕을 찾아보던중 필자의 정렬에 대한 이해를 도와준 블로그 포스팅이 있어서 내 블로그에 올려놓고 계속 볼 생각이다! 출처는 다음과 같다. https://evan-moon.github.io/2018/10/13/sort-algorithm/ 정렬 알고리즘 정리 (Bubble, Selection, Insertion, Merge, Quick) 이번 포스팅에서는 대표적인 정렬알고리즘 5가지와 대략적인 에 대해서 정리하려고 한다. 먼저, 그 5가지 정렬알고리즘은 다음과 같다. evan-moon.github.io ==============================================================..

    [알고리즘] 알고리즘의 성능 평가 | 점근식 표기법 | 순환

    성능 분석 : 프로그램을 실행하는데 필요한 시간과 공간의 추정 성능 측정 : 컴퓨터가 실제로 프로그램을 실행하는데 걸리는 시간 측정 ============================================================================================ 성능 분석 공간 복잡도 : 알고리즘을 실행시켜 완료하는데 필요한 총 저장 공간(고정 공간 + 가변 공간) 시간 복잡도 : 알고리즘을 실행시켜 완료하는데 걸리는 시간(컴파일 시간 + 실행 시간) 점근식 표기법(Asymptotic notation) Big-Oh (O) : f, g가 양의 정수를 갖는 함수일 때, 두 양의 상수 a, b가 존재하고, 모든 n >= b에 대해 f(n) ≤ a · g(n) 이면, f(n)..

    [알고리즘] ADL

    #컴퓨터 공학부 3학년 과정인 알고리즘을 수강하면서, 교수님이 알고리즘을 구현할 때 언어로 파이썬을 사용하시는데, 파이썬으로 코드를 구현하기 전에 ADL을 이용하여 알고리즘을 기술한다. 그래서 ADL에 대해 정리해보고자 한다. ADL (Algorithm Description Language) 알고리즘 기술을 위해 정의한 언어 사람이 이해하기 쉽고, 프로그래밍 언어로의 변환이 용이 의사 코드 (pseudo-code) : ADL과 약간의 자연어로 기술한 것 ADL 데이터 : 숫자, 부울(Boolean) 값, 문자 ADL의 명령문 : 종류 : 지정문, 조건문, 반복문, 함수문, 입력문, 출력문 명령문 끝에는 세미콜론(;)을 사용 지정문 형식 : 변수 ← 식; 식 (expression) 산술식 부울식 – 결과 ..

    [컴퓨터 네트워크] 네트워크 연결성 | 교환망, 노드, 링크, 연결 세션, ISP란?

    [컴퓨터 네트워크] 네트워크 연결성 | 교환망, 노드, 링크, 연결 세션, ISP란?

    #전공 수업시간에 배운 내용을 복습하다가 좀 더 이해가 필요한 개념들을 정리하고자 한다. 네트워크의 연결성은 다양한 단계에서 발생한다. 최저 단계의 네트워크는 동축 케이블이나 광섬유 등을 이용하여 두 대 이상의 컴퓨터가 직접 연결되어 이루어 진다. 이러한 연결매체를 링크(Link)라고 한다. 또한 이를 이용해 연결된 컴퓨터들을 노드(Node) 라고 한다. 물리적 링크는 한 쌍의 노드로 제한되기도 하고 (이러한 링크를 점대점(Point-to-Point)라고 한다.) 그 밖의 경우에는 두 개 이상의 노드가 단일 링크를 공유할 수 있다. (다중 접속(Mutiple-Access)). (a) : 점대점, (b) : 다중 접속 주어진 링크가 점대점이나 다중 접속 연결성을 지원하는지의 여부는 노드가 어떻게 링크에 연..

    [컴퓨터 구조] 부동 소수점 & 바이어스 수 biased number 127

    부호부 1bit 지수부 8bit 가수부 나머지bit 1. 먼저 표현하고자 하는 소수(실수) 를 2진수로 변환한 후 소수점 앞의 숫자가 2보다 작아지도록 소수점을 이동시키고 소수점 이동(부동소수점 : 부유하는 소수점 floating point)에 따른 2의 제곱승(-->지수부)을 곱해주어 아래와 같이 만든다 예) 1.001101 * 2^6 (

    [컴퓨터 구조] 1의 보수와 2의 보수 표현법 이해

    [컴퓨터 구조] 1의 보수와 2의 보수 표현법 이해

    ⦁ 2진수의 수 표현법 아마 이 글을 보시는 대부분은 2진수가 무엇인지는 모두 알고 있을 겁니다. 예로들어 4bit에서 수를 표현한다면 이럴테죠. 0000(2) = 0 0001(2) = 1 0010(2) = 2 0011(2) = 3 0100(2) = 4 ⋮ 1110(2) = 14 1111(2) = 15 여기서 한 가지 가장 큰 문제를 찾으라면 무엇이 있을까요? 우리가 10진수를 2진수로 해석하여 수를 표현하는데 아무런 문제가 없어보이지만, 조금만 생각해보면 우리가 쓰는 수 체계는 자연수(또는 양의 정수)만 존재하는 것이 아니죠. 엄연히 음의 정수도 수 체계에 포함되어있죠. 즉, 위 방식에서 가장 큰 문제라면 바로 음수를 표현 할 방법이 없다는 것입니다. 그러면 어떻게 음수를 표현할까? 이에 대한 고민을 ..

    [컴퓨터 구조] 실수 표현 - 실수 표현 | 단일 정밀도 부동 소수점 | 지수, 바이어스 값 |IEEE 754

    공부하다가 이해가 안 가서 한참 들여다본 단일 정밀도 부동소수점... 정규화된 표현 지수 - 바이어스 값 부분이다. 왜 바이어스 값을 이용하며, 바이어스 값이 왜 127인지 컴퓨터 구조 전공 서적만으로는 이해가 되지 않아 아래 글을 보며 차근차근 이해했다. 또 찾아보게 될 수 있으니 정리해두고자 한다. ============================================================= float의 경우는 지수의 비트수가 8비트입니다. 그렇다면 표현 가능한 수는 256가지 이지요 (0 ~ 255) ieee754 표현법을 아신다니 간략히 말씀 드리지요 5.625를 실수로 표현하면 이진수로 바꾸니까 101.101 이 됩니다. 이걸 1.xxx 형식으로 정규화 하니까 +1.01101 *..