본문 바로가기

분류 전체보기90

나이팅게일을 아시나요? 1858년 영국 왕립통계학회 최초의 여성 회원으로 선출되었습니다. 그녀의 이름은 바로 나이팅게일! 맞습니다 우리가 백의의 천사로 알고 있는 그 나이팅게일입니다. 그녀는 크림전쟁(1853~1856) 당시 38명의 성공회 수녀들의 도움을 받으며 슈코더르(스쿠타리)의 야전 병원에서 초인적인 활약을 보였습니다. 흔히 나이팅게일 하면 고통받는 부상병을 돌본 봉사자를 연상하지만 이 시기의 나이팅게일은 유능한 행정가이며 협상가였습니다. 그녀는 관료주의에 물든 군을 설득했고, 병원에서 쓰는 물건들을 세심하게 조사했으며, 무질서한 병원에 규율을 세웠습니다. 그로 인해 환자의 사망률은 42퍼센트에서 2퍼센트로 뚝 떨어졌답니다. 이러한 기록적인 사망률의 개선은 바로 그녀의 통계학자로서의 역량을 보여준 것이라 할 수 있습니다.. 2020. 7. 21.
[C언어 알고리즘] 정렬 (8) - 병합정렬 (Merge Sort) 병합정렬은 이미 정렬된 두 파일을 병합(Merge)하는 방식을 일반화한 것입니다. 병합정렬은 아주 자연스럽고 이해가 쉽고 빠른 속도를 가지는 정렬방식입니다. 병합정렬은 두 자료를 순차적으로 읽어가면서 비교 접근하는 방법으로 연결리스트(Linked-list), 테이프(Tape)같은 순차적 접근만이 용이한 자료구조나 기억장치에서 유용하고 유일한 정렬방법입니다. 병합정렬은 메모리내부(internal)정렬뿐 아니라 외부(external) 정렬에서도 사용합니다. 이번 포스팅에서는 하나의 배열을 최소 단위 (배열의 1개요소)부터 단위를 2배로 늘려가며 정렬하는 예제에 대해 공부합니다. 우선 병합정렬의 기본 의사코드(Pseudo code)를 보도록 하죠. 1. size = 1 2. size가 N보다 작을 동안 2.1.. 2020. 7. 21.
C언어 공부하기 - 연산자 연산자란 C언어 수식 또는 문장에서 어떤 기능을 수행하는 기호를 의미합니다. 수학 연산에서 배우는 기호와 많이 유사하죠. 예를 들어 다음과 같은 C언어 문장이 있다고 합시다. int age = 10; age = age + 10; 첫 문장은 정수형 변수 age를 선언하고 그 변수에 10을 대입하라는 의미입니다. 여기서 '='기호는 오른쪽 값을 왼쪽에 대입(또는 지정Assignment)하라는 대입연산자입니다. age와 10은 피연산자입니다. 두 번째 문장은 위에서 선언한 age(10이란 값이 들어 있죠.)에 10를 더해 다시 age에 넣으라는 의미입니다. '+'기호는 더하라는 의미의 산술(Arithmetic)연산자이고 '='기호는 마찬가지로 대입연산자입니다. 1. 산술연산자 산술연산자는 두개의 피연산자를 갖.. 2020. 7. 20.
C언어 공부하기 - 변수와 상수 변수와 상수는 프로그램에서 사용되는 기본적인 데이터입니다. 변수와 상수를 사용하기 위해서는 사용할 변수를 형식에 맞게 선언을 하고 값을 지정해 줄 필요도 있습니다. 변수와 상수는 데이터형(Data type)에 따라 사용할 수 있는 값과 그들을 다룰 연산이 결정됩니다. 이번 포스팅에서는 기본 데이터형과 변수 및 상수의 개념과 사용 예제를 다루겠습니다. 1. 변수 (Variable) 변수는 데이터형에 맞는 값이 변경이 가능한 메모리 공간입니다. 예를 들어 나이라는 데이터를 아래와 같이 선언하고 초기값을 지정했다고 합시다. int age = 10; 위의 문장에서는 나이를 의미하는 age라는 변수명을 int형이라는 데이터형으로 선언하고 값을 10으로 지정했다는 의미입니다. '='기호는 수학에서는 등호로 같다라는.. 2020. 7. 18.
C언어 공부하기 - 시작하기 1. 시작 새로운 언어를 가장 빨리 배우는 법은 그 언어로 프로그램을 짜보는 것입니다. 처음에는 에러도 실수도 많겠지만 고쳐가는 과정에서 실력은 눈에 띄게 늘게 될 것임을 확신합니다. 모든 프로그래밍 언어에서 시작은 항상 다음과 같은 문자를 화면에 출력하는 프로그램을 짜는 것으로 시작합니다. hello, world! 이 프로그램을 C언어로 작성하는 것은 매우 간단합니다. 파일 이름을 hello.c라고 저장합니다. #include void main() { printf("hello, world!\n); } 2. 프로그램 분석 매우 짧은 프로그램이지만, 살짝 분석을 해보겠습니다. #include #include는 다음에 나오는 사이의 파일을 포함시키겠다는 매크로 입니다. 여기서는 stdio.h라는 파일을 포함.. 2020. 7. 16.
[C언어 알고리즘] 정렬(7) - 기수정렬 (Radix sort) Radix란 수학에서 밑(Base)를 의미하는 진법 체계에서 기준이 되는 수를 의미합니다. 예를 들어 자연수 1234가 있다면 $$ 1234 = 1 \times 10^3 + 2 \times 10^2 + 3 \times 10^1 + 4 \times 10^0 $$ 으로 표현이 가능합니다. 어떤 진법을 사용해도 상관은 없지만 컴퓨터가 처리하기 좋은 이진법을 사용하여 설명을 드리겠습니다. 초기 데이터가 아래와 같을 때, l e a r n a l g o r i t h m 아래 그림은 문자를 세로로 정렬하여 이진수로 표기하여 맨 앞열은 문자를 세로로 배열한 내용이고, 7~0은 각 비트에 해당하는 이진수를 의미합니다. 최상위 비트(7bit)에서 최하위 비트(0 bit)까지 배열의 맨 앞문자('l')부터 비트 '1'인.. 2020. 7. 14.