본문 바로가기

전체 글58

[즐거운 수학퀴즈] 아인슈타인 퍼즐 이 문제는 아인슈타인이 만들었고, 문제를 풀면 전세계 2%내에 드는 영재입니다. 조건1 색깔이 다른 5채의 집이 일렬로 있다. 각 집마다 서로 다른 국적의 사람이 살고 있다. 다섯사람은 어떤 종류의 음료수를 마시고, 담배를 피우고, 동물을 기른다 어떤 두 사람도 음료나 담배, 키우는 동물이 일치하지 않는다. 조건2 영국사람은 빨간집에 산다. 스웨덴 사람은 개를 기른다. 덴마크 사람은 차를 마신다. 초록집은 하얀집의 왼쪽 집이다. 초록집에 사는 사람은 커피를 마신다. 팔말(Pall Mall)담배를 피우는 사람은 새를 기른다. 노란집 사람은 던힐(Dunhill)담배를 피운다. 한가운데 집에 사는 사람은 우유를 마신다. 노르웨이 사람은 첫번째 집에 산다. 블랜드(Blend)담배를 피우는 사람은 고양이를 기르는.. 2020. 7. 24.
C언어 공부하기 - 순환문(1) while, for 순환문(Loop)은 반복계산을 위해 사용되는데 대표적으로 while문과 for 문이 있습니다. 먼저 while문은 아래와 같은 형식으로 사용합니다. while (expression) statement expression을 계산하여 참이면 (= 0 이 아니면) statement를 수행하고 다시 expression을 계산을 반복을 합니다. 반면 for문은 다음과 같은 형식을 갖습니다. for (expr1; expr2; expr3) statement 위 구조의 for 문을 while문으로 동일하게 바꿔 보면 아래와 같습니다. expr1 while (expr2) { statement expr3 } for문의 세가지 expr1, expr2, expr3은 모두 수식이어야 하는데 한개 이상 생략을 할 수 있습니다. .. 2020. 7. 23.
[즐거운 수학퀴즈] 사라진 1달러 세 사람이 바에서 술을 마셨습니다. 총 30 달러가 나왔습니다. 한 사람이 10달러씩 내기로 하고 웨이터에게 돈을 주었는데, 주인이 단골 손님이라고 깎아준다며 웨이터에게 5달러를 돌려주라고 했습니다. 그런데 웨이터가 생각해보니 5달러를 세사람에게 나눠줄 수 없어서 2달러를 자기가 슬쩍하고 3달러만 돌려줬습니다. 그러면, 세사람은 각자 1달러씩 돌려받았으니 9달러씩 술값을 낸 셈임니다. 세사람이 낸 돈 27달러와 웨이터가 가져간 2달러를 합하면 29달러인데. 1달러는 어디 갔을까요? 더보기 실제로 돈을 가지고 있는 사람들은 주인 25달러, 웨이터 2달러, 세사람 3달러로 30달러가 맞습니다. 원래 술값으로 낸 27달러를 주인 25달러, 웨이터 2달러로 나눠가진 것으로 별로 이상할 게 없습니다. 오류가 생긴.. 2020. 7. 23.
C언어 공부하기 - 제어문 C언어에서 제어문은 계산순서를 정하는 것으로서 if ~ else, else if 문, switch 문등이 있습니다. 1. 문장과 블럭 (Statements and Block) x=0 또는 i++, printf(...) 같은 것은 수식 (expression)이라고 하며, 이들이 세미콜론(;)으로 끝이 나면 문장(statement)이 됩니다. i = 0; x++; printf("hello, world!\n"); C언어에서 세미콜론은 문장의 끝을 나타냅니다. 중괄호 { }는 여러개의 선언문이나 문장을 모아서 복합문(compound statement)이나 블럭(block)을 만드는데 쓰입니다. 2. if ~ else 문 if ~ else문은 프로그램 흐름을 결정하기 위해 사용되는데 문법은 아래와 같습니다. if.. 2020. 7. 21.
나이팅게일을 아시나요? 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.