본문 바로가기

전체 글58

복면산 (覆面算, Verbal arithmetic) 복면산(覆面算, Verbal arithmetic)은 수학 퍼즐의 일종으로, 문자를 이용하여 표현된 수식에서 각 문자가 나타내는 숫자를 알아내는 문제입니다. 숫자 대부분을 문자로 숨겨서 나타내므로 숫자가 복면을 쓰고 있는 연산이라는 뜻에서 복면산(覆面算)이라는 이름을 얻었습니다. 복면산은 특별한 언급이 없는 경우, 같은 문자는 같은 숫자를 나타내고, 첫번째 자리 숫자는 0이 아니라고 가정하는 것이 일반적이고 복면산 문제의 답은 유일해야 합니다. 먼저 쉬운 문제 부터 해결해 보겠습니다. \[ \begin{align} A{\quad}A \\ \underline{+{\quad}{\quad}A}& \\ 7{\quad}2& \end{align} \] 먼저 1의 자리를 보면 같은 숫자를 더했을 때 2가 나와야 하므로.. 2020. 7. 6.
목표 수 만들기 수학은 수를 다루는 학문입니다. 초등 저학년 때부터 빠르고 정확한 연산이 중 고등학교의 수학공부에 토대가 됩니다. 요즘은 논리력과 합리적 판단을 요구하는 교육이 주목을 받기 때문에 수학의 기초인 연산에 소홀해 지는 경우가 많습니다. 수학 연산은 타고 난 재능이 있는 경우는 드물고 99.9%는 학습을 통해 익숙해지므로 반복적인 연습이 필요합니다. 그런데 학습지나 학교, 학원에서 연산을 공부할 때 같은 패턴을 죽어라 반복을 하니 아이들이 얼마나 지겹겠어요? 다 찍고 쉬는 거죠. 그러다 보니 이상하게 틀리는 것들은 계속 틀리게 됩니다. 맞게 계산해야 겠다는 생각 자체를 안하게 되는 수학 장애를 갖게 됩니다. 다양하고 흥미를 느낄 수 있는 연산문제로 학습을 하면 조금 나아 질 수 있을까요? 이번에는 1부터 9까.. 2020. 7. 5.
포포즈 (Four fours) 포포즈(Four fours)는 4를 4번 써서 자연수를 만드는 것입니다. 예를 들면 \(1 = (4/4)+(4-4) \)와 같이 사칙연산으로 표현할 수 있습니다. 포포즈는 1802년 영국의 라우즈 볼이 만들었습니다. 포포즈의 규칙은 4를 네번만 쓰고 사칙연산\(+, -, \div, \times\)과 44, 분수, 제곱근, 거듭제곱, \(!\), 4, \(log\) 등도 쓸 수 있습니다. \(0 = 4+4-4-4\) \(1 = 4-4+(4\div4)\) \(2 = (4\times4)\div(4+4)\) \(3 = (4+4+4)\div4\) \(4 = 4+(4-4)\div4\) \(5 = ?\) 이런 방식으로 숫자를 만들어 보는 겁니다. 너무 쉬웠나요? 그러면, 중고등학생 수준으로 높여볼까요? \(0 = l.. 2020. 7. 5.
[C언어와 함께 자료구조를] 이진트리 순회 (Binary Tree Traverse) 트리(Tree)구조는 배열과 리스트 처럼 분명한 순회 순서(Traversal Order)를 갖지 않고 여러개의 순회 순서를 정의 할 수 있습니다. 트리(Tree)의 모든 노드들을 한 번씩 중복없이 순회하는 방법 4가지에 대해 이야기 해보려 합니다. 트리 순회하는 방법은 먼저 루트(Root)를 먼저 타는 방법 (전위 순회 : Preorder traverse), 루트를 중간에 타는 방법 (중위 순회 : Inorder Traverse), 루트를 나중에 타는 방법 (후위 순회 : Postorder Traverse), 마지막으로 층별로 타는 방법 (층별 순회 : Level order Traverse)등이 있습니다. 트리를 순회하는 방법 (앞 3가지)을 C언어로 구현하려면 재귀호출(Recursive Call)을 이.. 2020. 7. 4.
[C언어와 함께 자료구조를] 트리 (Tree) - 용어 정리와 이진트리 지금까지 다뤄본 자료구조들을 모두 선형적인 일차원 구조였습니다. 즉, 처음부터 끝까지 차례로 이동하면 모든 노드를 거칠 수 있었죠. 하지만 트리(Tree)는 대표적인 비선형구조(Non-linear structure)로 2차원구조 입니다. 트리(Tree) 구조는 일상에서도 많이 볼 수 있는데요, 대표적으로 탐색기 폴더구조를 들 수 있습니다. 로컬디스크(C:)에 여러 폴더들이 존재하고 그 하위 폴더 그 아래 하위 폴더 등으로 구성되는 구조입니다. 트리(Tree) 구조는 나무를 거꾸로 뒤집어 놓은 것 같은 모양입니다. 가장 위에 있는 노드를 root라 하고 거기서 시작하여 가지 (link)가 밑으로 향하며 맨 아래에 잎(leaf)이 달려 있습니다. 위 그림을 가지고 트리(Tree)구조에서 일반적으로 사용하는 .. 2020. 7. 3.
[C언어와 함께 자료구조를] 환형연결리스트 (Circular Linked List) 환형연결리스트(또는 원형연결리스트 Circular Linked List)는 단순연결리스트(Simple Linked List)의 Tail노드가 Head노드를 가리키고 있는 구조로 머리가 꼬리를 문 뱀모양의 둥근 모양을 하고 있습니다. 환형연결리스트의 연산은 단순연결리스트의 것과 비슷합니다. 다른 것은 환형연결리스트는 Tail이라는 개념이 없다는 것 뿐입니다. 해결하려는 문제에 따라 자연스럽게 환형연결리스트를 사용해야 되는 경우가 있습니다. 예를들어, 어떤 다각형의 변은 그 자체로 하나의 루프를 형성하므로 다각형의 꼭지점을 환형리스트의 노드로 표현하는것이 적절한 방법입니다. 여기서는 환형연결리스트의 대표적인 "요셉의 문제"를 코드로 알아보도록 하겠습니다. "요셉의 문제"는 A부터 J까지의 10명의 사람이 시.. 2018. 11. 20.