1. 알고리즘과 순서도
- 알고리즘이 무엇인지 살펴 본다
- 알고리즘을 순서도로 표현해 보는 방법에 대한 이해
- 이렇게 순서도로 표현한 알고리즘을 통해 간단한 프로그램을 엔트리로 구현해 본다.
링크 : https://wondangcom.tistory.com/2767 (2024.02.22)
2. 조건문
- 조건문이 무엇인지 살펴 본다.
- 조건문을 순서도로 어떻게 표현하는지 살펴 본다.
링크 : https://wondangcom.tistory.com/2778 (2024.03.05)
2.1 엘리베이터 문제
생활 속에서 만나는 엘리베이터 문제를 통해 조건문을 활용하는 프로그램을 엔트리로 구현해 본다.
(임의의 층 수를 선택 하고 나와의 거리를 측정하여 어떤 엘리베이터가 와야 하는지 예측해 보자.)
링크 : https://wondangcom.tistory.com/2779 (2024.03.12)
2.2 윤년 문제
일년은 365일(?) 이 아니고 365.2422일이다. 따라서 평년과 윤년으로 구분해서 평년은 365일로 2월을 28일, 윤년은 366일로 2월을 29일까지 두면서 4년에 한번씩 윤년으로 만들어 준다. 하지만 354.25일이 아니므로 오차가 발생하게 된다. 이것을 보정하기 위해서 100년 마다 다시 평년으로 되돌려 주고, 400년 마다 윤년으로 만들어 주면 400년에 한번씩 거의 정확히 0년에 지구가 태양의 둘레를 돌기 위해 출발한 위치에 근접한다.
이 문제를 프로그램으로 어떻게 해결해야 하는지 순서도를 그려 보고 엔트리로 구현해 본다.
링크 : https://wondangcom.tistory.com/2784 (2024.03.19)
2.3 두 수의 교환
어떤 수 a 와 b를 입력 받았을 때 a 부터 b 까지 어떤 작업을 처리해야 하는 경우가 발생한다.
하지만 데이터는 반드시 작은 수 와 큰 수 순으로 주어지는 경우만 있는 것은 아니다.
우리는 a 가 큰수가 들어 오고 b가 작은 수가 들어 왔을 때 a는 항상 작은 수 b는 항상 큰 수가 되도록 프로그램으로 어떻게 처리하는지를 구현해 본다.
링크 : https://wondangcom.tistory.com/2794(2024.03.26)
2.4 세 개의 변수 중에 가장 작은 수를 찾기
보이지 않는 상자 3개 a,b,c 가 있는데 양팔 저울을 이용하여 이 상자 중 가장 가벼운 상자를 찾는 방법이라면 어떻게 할까?
우리는 이와 같은 방법으로 임의의 수 a,b,c 중에서 가장 작은 값을 찾아 내는 프로그램을 작성해 보자.
링크 : https://wondangcom.tistory.com/2798 (2024.04.02)
2.5 성인 유무 판단하기
우리나라에서는 성인이 되는 기준을 만 19세이다. 나이를 입력 받아 성인인지 아닌지 판단하는 프로그램을 작성해 보자.
링크 - https://wondangcom.tistory.com/2807(2024.04.09)
2.6 어린이,청년,중년,노인 판단하기
어린이는 12세 이하, 청소년은 18세 이하, 성인은 64세이하,노인은 65세 이상이다.
나이를 입력 받은 후 어린이,청소년,성인,노인을 판단하는 프로그램을 작성해 보자.
링크 - https://wondangcom.tistory.com/2814 (2024.04.16)
2.7 년도와 월을 입력 받아 마지막 날짜 출력하기
윤년을 구하는 방법을 살펴 보았다. 이 것을 이용하여 년도와 월을 입력 받아 해당 년도의 해당 월의 마지막 날짜를 출력하는 프로그램을 작성해 본다.
평년의 경우 1월 부터 12월까지의 월의 마지막 날짜는 { 31,28,31,30,31,30,31,31,30,31,30,31 } 순서로 되어 있으며 윤년의 경우 2월만 29일로 바뀐다.
링크 - https://wondangcom.tistory.com/2830
2.8 세변을 입력 받아 삼각형을 만들 수 있는지 판단하기
세 개의 막대 길이를 입력 받아 이 막대를 가지고 삼각형을 만들 수 있는지를 판단하는 프로그램을 작성해 보자.
링크 - https://wondangcom.tistory.com/2834
3. 반복문
- 어떤 과정을 순서 대로 1000번을 수행할때 순차적으로 1000번을 코딩해야 할까?
- 반복하는 과정을 어떻게 처리하는지 살펴 본다.
3.1 1 부터 입력 받은 수까지의 수를 반복하여 출력하기
1부터 입력 받은 수까지 반복하는 프로그램을 작성하면서 반복문의 사용법을 익힌다.
링크 - https://wondangcom.tistory.com/2842
3.2 작은 수 부터 큰 수 까지 출력하기
두 수 a,b를 입력 받아 작은 수 부터 큰 수 까지 출력해 보자.
링크 - https://wondangcom.tistory.com/2853
3.3 2단 출력하기
구구단의 2단을 2*1 ~ 2*9 까지 출력해 보자.
3.4 n단 출력하기
n을 입력 받아 n*1~n*9 까지 n단을 출력해 보자.
3.5 3의 배수 출력하기
두 수를 입력 받아 작은 수 부터 큰 수 사이의 숫자 중에 3의 배수를 출력해 보자.
예를 들면 2~10 사이의 숫자중 3의 배수는 3,6,9 이다.
3.6 3 또는 5의 배수 출력하기
두 수를 입력 받아 작은 수 부터 큰 수 사이의 숫자 중에 3또는 5의 배수를 출력해 보자.
예를 들면 2~10 사이의 숫자중 3 또는 5의 배수는 3,5,6,9,10 이다.
3.7 등차수열
등차 수열은 같은 차이만큼 떨어져 있는 수열을 의미한다. 즉 2,4,6,8 과 같이 수와 수 사이가 일정한 수열을 의미한다.
처음 시작하는 수와 그 수열의 차이를 입력 받아 n 번째 항의 값이 무엇인지 찾아 내는 프로그램을 작성해 보자.
3.8 시그마
시그마는 어떤 숫자들을 모두 다 더하라는 의미이다. 1부터 10까지 더해서 출력하는 프로그램을 작성해 보자.
3.9 두 수 사이의 합
두 수 a,b를 입력 받아 두 수 사이의 합을 출력하는 프로그램을 작성해 보자. 예를 들어 10 과 1 두 수를 입력 받으면 1부터 10까지의 합 55를 출력한다.
3.10 등차수열의 합
초항과 등차가 주어지고 n번째 항까지의 합을 구하는 프로그램을 작성해 보자.
3.11 등비수열
수열 중 같은 비율만큼 떨어져 있는 수열을 의미한다. 즉 1,2,4,8,... 과 같이 수와 수 사이의 비율이 일정한 수열을 의미한다.
처음 시작하는 수와 그 수열의 비율을 입력 받아 n번째 항의 값이 무엇인지 찾아내는 프로그램을 작성해 보자.
3.12 팩토리얼
팩토리얼 또는 계승이라고 하는데 이것은 1부터 그 수까지의 수를 곱한 것이다. 예를 들어 4!=1*2*3*4 의 의미이다.
어떤 수 n을 입력 받아 n!을 계산하여 출력하는 프로그램을 작성해 보자.
3.13 약수
어떤 수를 나누어 떨어지게 하는 수를 약수라고 한다.
즉 6의 약수는 1,2,3,6 이 있다.
어떤 수 n을 입력 받아 이 수의 약수를 모두 출력하는 프로그램을 작성해 보자.
3.14 큰 수의 약수
어떤 수의 약수를 구하기 위해서는 1부터 그 수까지 반복을 하면서 어떤 수를 나누어 떨어지게 하는지 살펴 보아야 한다.
하지만 큰 수가 들어 왔을 때(예를 들어 10억) 그 만큼 연산하는 것은 시간이 많이 걸린다.
100의 약수를 구할 때 1이 약수인 것을 안다면 쌍의 값 100이 약수인 것을 찾을 수 있다. 이렇게 하면 √100까지만 찾아도 모든 수의 약수를 찾을 수 있다.
빠르게 연산하여 큰 수의 약수를 찾아내는 프로그램을 작성해 보자.
3.15 공약수
두 수 a와 b의 약수 중 같은 약수를 가지는 수를 공약수라고 한다. 예를 들어 2 와 4의 공약수는 1,2 이다.
두 수를 입력 받아 공약수를 출력하는 프로그램을 작성해 보자.
3.16 최대 공약수
두 수 a와 b의 공약수 중 가장 큰 수를 최대공약수라고 한다. 예를 들어 12와 16의 최대 공약수는 4이다.
두 수를 입력 받아 최대공약수를 출력하는 프로그램을 작성해 보자.
3.17 유클리드 호제법
최대 공약수를 구하기 위해서는 1부터 두 수중 어느 한 수 까지 계속 계산을 해 보아야 한다. 하지만 유클리드라는 사람이 다음과 같은 규칙을 찾아 내었다. a와 b의 최대공약수는 b와 a를 b로 나눈 나머지의 최대공약수와 같다는 규칙이다.
이 규칙을 이용하여 큰 수의 최대공약수도 빠르게 계산이 가능하다.
두 수를 입력 받아 최대공약수를 구하는 프로그램을 유클리드 호제법을 이용하여 작성해 보자.
3.18 최소공배수
두 수의 배수 중 같은 배수를 공배수라고 한다. 그 중 가장 작은 공배수를 최소공배수라고 한다. 즉 3과 4의 최소 공배수는 12이다.
어떤 수 a,b를 입력 받아 두 수의 최소 공배수를 구하는 프로그램을 작성해 보자.
3.19 최대공약수를 이용한 최소 공배수
A*B는 최대공약수 * 최소공배수와 같다. 이 원리를 이용하여 최대공약수를 구한 후 A*B를 최대 공약수로 나누어 주면 최소공배수를 구할 수 있다.
이 원리를 이용하여 두 수 a,b를 입력 받아 최소 공배수를 구하는 프로그램을 작성해 보자.
3. 20 소인수 분해
소인수 분해란 소수인 인수들의 곱셈으로 어떤 수를 나타내는 것이다. 예를 들어 12를 소인수 분해 하면 2 * 2 * 3 이다.
어떤 수를 입력 받아 소인수 분해를 하는 프로그램을 작성해 보자.
3.21 소인수 분해와 약수의 갯수
소인수 분해를 하면 소수의 거듭제곱의 곱으로 나타낼 수 있다. 예를 들어 12=2^2 * 3^1 이다.
여기서 약수의 갯수를 세는 경우 2가 2개 3이 1개 포함 되어 있으므로 2를 0개,1개,2개 사용할 수 있는 3가지 방법과 3을 0개,1개 사용할 수 있는 2가지 방법이 있다. 따라서 3*2=6 개의 약수를 만들어 낼 수 있다.
이러한 원리로 어떤 수를 입력 받아 소인수 분해하여 약수의 갯수를 구하는 프로그램을 작성해 보자.
3.22 거듭제곱
거듭 제곱은 똑같은 수를 여러 번 곱한 것을 의미한다. 예를 들어 24=2*2*2*2 의 의미이다. 여기서 2는 밑이라 하고 4는 지수라고 한다.
어떤 수의 밑과 지수를 입력 받아 그 값을 출력하는 프로그램을 작성해 보자.
4. 다중 반복문
1부터 10까지 각각의 숫자를 10번씩 반복해서 출력하고 싶다.
이때 다중 반복문을 활용하여 1일 때 10번 반복,2일때 10번반복~ 10일때 10번 반복하면서 각각의 수를 출력하면 된다.
다중 반복문을 활용하는 방법을 살펴 보자.
4.1 구구단 출력하기
지난번에 2단만 출력하는 프로그램을 만들어 보았었다. 2단부터 9단까지 구구단을 출력해 보자.
4.2 a단 부터 b단까지 출력하기
두 수 a,b를 입력 받아 작은수 부터 큰 수 까지 구구단을 출력하는 프로그램을 만들어 보자.
4.3 군수열
군수열이란 무리군자를 사용해서 규칙적으로 뭉쳐있는 숫자들의 수열을 의미한다.
즉 (1),(1,2),(1,2,3),(1,2,3,4)... 와 같이 1군,2군... 과 같이 나눌 수 있다.
어떤 수n을 입력 받아 이 n번째 항은 몇번째 군에 속하는지 찾는 프로그램을 만들어 보자.
4.4 군수열의 합
군수열을 앞에서 살펴 보았다.
어떤 수 n을 입력 받아 n번째 군까지의 합을 구하여 출력하는 프로그램을 만들어 보자.
4.5 완전수
완전수란 자기 자신을 제외한 약수들의 합이 자기 자신의 값과 같은 숫자를 의미한다.
예를 들면 6의 약수는 1,2,3,6 인데 여기서 자신을 제외한 약수들의 합 1+2+3 = 6 이 된다.
이처럼 1부터 1000까지의 수 중에서 완전수를 찾는 프로그램을 만들어 보자.
4.6 더 큰 숫자에서의 완전수 찾기
1부터 1000까지가 아닌 1부터 100000까지의 수 중에서 완전수를 찾는 프로그램을 만들어 보자.
이때 시간이 너무 오래 걸리므로 약수를 구할 때 √N 까지만 연산해도 약수를 구할 수 있는 것을 알 수 있었다. 이 방식을 이용하면 좀 더 빠른 시간에 완전수를 찾을 수 있을 것이다.
5. 배열(리스트)
배열 또는 리스트는 하나의 변수를 여러개의 방으로 나누어서 여러개의 자료를 담을 수 있는 구조이다.
5.1 피보나치수열
피보나치 수열은 무인도에 한쌍의 새끼토끼를 풀어 놓았을때 2개월 후에 성체가 되고 성체가 된 토끼는 매달 한쌍의 새끼를 낳는다는 것에서 유래 되어 첫번째항과 두번째항은 1, 세번째항부터는 전항 + 전전항 값을 갖는 수열을 의미한다.
그렇다면 n을 입력 받아 n번째항의 피보나치 수열의 값은 무엇인지 출력하는 프로그램을 작성해 보자.
5.2 떡 먹는 호랑이
하루에 한번 산을 넘어가는 떡 장사 할머니는 호랑이에게 떡을 주어야 산을 넘어갈 수 있다.
욕심 많은 호랑이는 어제 받은 떡의 개수와 그저께 받은 떡의 개수를 더한 만큼 떡을 받아야 할머니를 무사히 보내 준다고 한다.
그렇다면 첫째날에 a개 둘째날에 b개를 받은 호랑이가 d일 후에는 몇개를 받아야 무사히 넘어갈 수 있는지를 구하는 프로그램을 작성해 보자.
5.3 에라토스테네스의 체
에라토스테네스의 체는 소수를 찾는 빠르고 쉬운 방법이다.
2가 소수라면 2의 배수는 모두 소수가 아니라는데서 착안하여 위와 같이 소수의 배수들을 체를 쳐서 걸러 내면서 소수만 남기는 형태로 에라토스가 발견하였다.
이러한 형태로 1부터 1000 까지 중에서 체를 쳐서 소수를 판별하는 프로그램을 만들어 보자.
'강의자료 > 코딩으로 즐기는 수학' 카테고리의 다른 글
2.1 엘리베이터 문제 (0) | 2024.03.12 |
---|---|
2. 조건문 (0) | 2024.03.05 |
1. 알고리즘과 순서도 (16) | 2024.02.22 |
[초등수학] 전자저울로 가짜 동전찾기 (11) | 2024.01.17 |
초등수학] 엔트리로 숫자 채워 연산하기 (20) | 2023.12.29 |