인기 글
-
3. 알고리즘 공부
[421] 이분 탐색(Binary Search) 조건 분기 쉽게 이해하기(Lower Bound, Upper Bound)
1. 이분 탐색이란?정렬되어 있는 범위에서 원하는 값을 찾기 위해 반씩 줄여가며 탐색하는 알고리즘입니다.정렬만 되어 있다면, 선형적으로 다 탐색할 필요 없이 범위가 반씩 줄어들기 때문에 시간복잡도가 \(O(\log{n})\)으로 상당히 효율적인 알고리즘입니다.영어로 Binary Search입니다.Binary라는 단어가 한국어로 번역되면서 이진 탐색, 이진 검색 등으로 사용됩니다.하지만 탐색 과정을 살펴보면 범위를 반으로 쪼개며 진행되기 때문에 이분 탐색이라는 용어가 더 직관적인 것 같습니다. https://ko.wikipedia.org/wiki/이진_검색_알고리즘 이진 검색 알고리즘 - 위키백과, 우리 모두의 백과사전위키백과, 우리 모두의 백과사전. 이진 검색 알고리즘(binary search algor..
-
2. 정보영재교육 수업 자료
[336] python 반올림(round) 주의사항 및 사사오입 구현하기
1. 반올림의 종류https://ko.wikipedia.org/wiki/반올림 반올림 - 위키백과, 우리 모두의 백과사전위키백과, 우리 모두의 백과사전.ko.wikipedia.org가. 사사오입우리가 흔히 알고 있는 반올림입니다.반올림하고자 하는 자릿수가 5일 경우 올립니다.예를 들어, 5.5와 6.5를 소수 첫째 자리에서 반올림하면 각각 6와 7이 됩니다.나. 오사오입통계학과 공학에서 사용하는 반올림입니다.반올림하고자 하는 자릿수가 5일 경우, 그 앞 자릿수가 짝수면 버리고, 홀수면 올립니다.즉, 반올림된 자릿수는 무조건 짝수가 됩니다.예를 들어, 5.5와 6.5를 소수 첫째 자리에서 반올림하면 둘 다 6이 됩니다.2. 파이썬의 round 함수파이썬의 round 함수는 오사오입의 반올림을 사용합니다.위..
-
2. 정보영재교육 수업 자료
[449] 완전수 쉽게 배우기
1. 완전수란 무엇일까?완전수는 자신을 제외한 모든 약수의 합이 자기 자신과 같은 수를 말해.먼저, 진약수라는 개념을 알아보자.진약수는 자기 자신을 제외한 약수를 뜻해.예를 들어, 숫자 6의 약수는 1, 2, 3, 6인데, 이 중 6을 뺀 1, 2, 3이 바로 6의 진약수야.진약수의 합에 따라 숫자는 세 가지로 나눌 수 있어. 완전수: 진약수의 합이 자기 자신과 같은 수예: 6의 진약수는 1, 2, 3이고, 이걸 더하면 6이 돼. 그래서 6은 완전수야! 부족수: 진약수의 합이 자기 자신보다 작은 수예: 8의 진약수는 1, 2, 4이고, 이걸 더하면 7이야. 7은 8보다 작으니까, 8은 부족수야. 과잉수: 진약수의 합이 자기 자신보다 큰 수예: 12의 진약수는 1, 2, 3, 4, 6이고, 이걸 더하면 1..
-
2. 정보영재교육 수업 자료
[59] 여러 명이 자리를 바꿔 앉는 경우의 수 - 완전 순열
1. 문제 상황갑자기 재밌는 문제가 떠올랐습니다.\(n\)명의 사람들이 자리를 바꿔 앉으려고 합니다. 이 때 모두가 자기의 자리에는 앉지 않으면서, 자리를 바꿔 앉는 경우의 수를 \(a_{n}\)이라고 할 때, \(a_{n}\)은 얼마일까요?2. 사람 수가 적을 때부터 생각해보기\(n\)이 \(\mathbf{1}\)이면 바꿔 앉을 의자가 없기 때문에 0가지 입니다. (\(a_{1}=0\))\(n\)이 \(\mathbf{2}\)이면 두 명이 서로 바꿔 앉는 방법 밖에 없기 때문에 1가지 입니다. (\(a_{2}=1\)) \(n\)이 \(\mathbf{3}\)일 때를 생각해봅시다. 일단 세 명이서 자리에 앉는 모든 경우를 생각해봅시다.\(\left\{1, 2, 3\right\}\), \(\left\{1, 3..
-
2. 정보영재교육 수업 자료
[436] 피보나치 수열을 구하는 여러 가지 방법(파이썬 코드)
1. 피보나치 수열?다음 문제들을 살펴보고 공통점을 생각해봅시다. 한번에 한 칸 또는 두 칸의 계단을 올라갈 수 있습니다.이 때, n칸을 올라가는 경우의 수는 몇 가지일까요? n개의 육각형이 두 줄로 그림과 같이 배치되어 있습니다.인접한 칸으로 이동이 가능하고, 현재 칸보다 숫자가 더 큰 칸으로 이동할 수 있습니다.1에서 n까지 이동하는 경우의 수는 몇 가지일까요? 첫번째 달에는 어린 암수 토끼 한 쌍이 있습니다.어린 암수 토끼 한 쌍은 한 달이 지나면 다 큰 암수 토끼 한 쌍이 됩니다.다 큰 암수 토끼 한 쌍은 한 달이 지나면 어린 암수 토끼 한 쌍을 낳습니다.n번째 달에는 토끼가 몇 쌍일까요? 문제는 모두 다르지만, 모든 문제의 공통점은 n번째의 수가 (n-1)번째와 (n-2)번째를 더한 수가 된다는..
-
2. 정보영재교육 수업 자료
[434] 유클리드 호제법(파이썬 코드)
1. 유클리드 호제법(파이썬 코드)a, b = 490, 350while b: a, b = b, a%bprint(a)# 70풀어볼 문제: 최대공약수와 최소공배수(https://www.acmicpc.net/problem/2609)2. 유클리드 호제법이란?유클리드 호제법은 두 수가 서로(互 서로 호) 0이 될 때까지 덜어내면(除 덜 제) 최대공약수를 찾을 수 있는 알고리즘입니다.기원전 3세기에 고대 그리스 수학자 유클리드가 집필한 에 명시되어 있습니다.이는 명시적으로 기술된 가장 오래된 알고리즘으로도 알려져 있습니다.3. 최대공약수를 구하는 과정 비교490과 350의 최대공약수를 구하는 과정을 코드로 작성해봅시다. 단순하게 1씩 증가시켜가며 두 수를 동시에 나눌 수 있는 수(공약수)의 최대값을 찾습니다...