2025년, 코딩은 선택이 아닌 필수!

2025년 모든 학교에서 코딩이 시작 됩니다. 먼저 준비하는 사람만이 기술을 선도해 갑니다~

강의자료/정보영재 95

Code Block 디버그 오류(For MinGW compilers, it's 'gdb.exe')

저희 원의 학생이 집에서 코드 블럭 설치 후에 디버깅을 하는데 디버깅이 안된다고 해서 처리방법에 대해 설명 드립니다. 학생의 컴퓨터에서 디버깅을 실행하면 아래 그림과 같이 디버깅 설정이 잘못 되어 있다고 나오는데요. 당황하지 마시고 메뉴에서 Settings->debugger 을 선택 합니다. 다음과 같이 설정화면이 뜨면 Default 를 선택해 줍니다. Executable path 에 빨간색으로 되어 있는데 Path가 지정되어 있지 않거나 Path가 제대로 안 잡혀 있는 경우입니다. 따라서 옆에 ... 버튼을 클릭하여 해당 path를 잡아 주면 되는데요. 일반적으로 CodeBlock 설치 위치가 C:\Program Files (x86)\CodeBlocks\MinGW\bin 에 설치가 됩니다. C:\Pro..

행렬의 곱을 이용한 피보나치 수열 구하기

피보나치 수열은 죽지 않는 토끼에서 유래 되었는데요. 처음 태어난 토끼 한쌍은 한달이면 다 자라고 그 다음달 부터는 매달 한쌍의 새끼를 낳았을때 1년 후 혹은 2년 후에 몇쌍이 되어 있는지 궁금해서 묻는 문제에서 유래 되었는데요. 이러한 토끼가 살아 있는 쌍을 구하는 공식을 테이블을 이용해 그려 보면 다음과 같이 그려 볼 수가 있습니다. 새끼를 낳을수 있는 토끼를 성체라고 보면 다음과 같이 됩니다. 기간 1월 2월 3월 4월 5월 6월 7월 8월 9월 태어난쌍 1 0 1 1 2 3 5 8 13 성체 0 0 1 1 2 3 5 8 13 살아있는쌍 1 1 2 3 5 8 13 21 34 성체를 계산 하는 방법은 전월의 성체의 수에 전전월에 태어난 토끼의 수를 더해 주면 됩니다. 가령 3월의 성체 수는 2월의 성..

행렬식의 기하학적 의미 - 벡터가 이루고 있는 평행사변형의 넓이

이산 수학을 공부하다 보면 행렬에 관한 문제를 풀게 되는데요. 행렬을 배우다 보면 행렬식을 배우게 됩니다. 영어로는 determinant 라고 하면서 계산 하는 방법은 다음과 같습니다. A 행렬이 다음과 같이 구성 되어 있을때 행렬식 det(A) = a11 * a22 - a12 * a21 과 같이 계산이 됩니다. 그렇다면 이러한 행렬식이 의미하는 것은 무엇일까요? 알고리즘에서 기하문제가 종종 나오는데... 기하 문제에서 사용하는 사각형의 부피를 구할때 이 행렬식을 이용하기도 합니다. 오늘은 이 두개의 벡터가 이루고 있는 평행사변형의 넓이에 대해 알아 볼까 합니다. 위와 같은 벡터가 두개가 있는 경우 행렬식은 이 벡터를 선형 변환 후 두 기저벡터가 이루고 있는 평행사변형의 넓이를 의미합니다. 이것을 벡터의..

[컴퓨팅 사고력]2의 보수 3의 보수는 무엇일까?

엊그제 학생들에게 2의 보수를 설명을 해 주면서 10의 보수의 개념에 대해 먼저 설명을 해주었답니다. 보수란 보충하는 수의 개념으로 8의 10의 보수는 10을 만들기 위한 2이고 8의 9의 보수는 9를 만들기 위해서 보충하는 1의 수라고 말해 주었답니다. 그리고 나서 2의 보수는 1의 보수에 1을 더한 값이라는 개념에 대해 설명을 해 주었습니다. 왜냐하면 2의 보수가 되려면 1과 2차이가 1이 차이가 나기 때문에 1을 더해 주어야 하기 때문이죠... 그러면서 88의 10의 보수는 100을 만들기 위한 12인데 이것을 100 - 88 = 12 라고 계산 하는 것 보다 9의 보수 개념으로 각각의 자리에서 9-8 = 1, 9 - 8 = 1 이기 때문에 11 + 1 = 12 가 되는 방법에 대해 설명을 해 주면..

CodeBlock 환경설정 초기화 방법

코드블럭을 사용하다 보면 실수로 환경설정이 바뀌는 일이 발생하는 경우가 종종 있습니다. 예를 들면 다음과 같이 로그창이 보여 주는 것이 정상인데 실수로 드래그 해서 아래로 내리는 경우 다시 위로 끌어 올릴려고 할때 끌어 올릴 수가 없는 경우 프로그램을 삭제했다가 다시 재 설치해도 보이지 않고 Logs 를 선택해도 보이지 않는 경우 코드블럭을 처음 설치 하는 것과 동일한 환경을 만들고 싶은 경우 다음과 같이 수행하면 됩니다. 1. CodeBlock 를 종료 후 2. C:\Users\사용자계정\AppData\Roaming\CodeBlocks 디렉토리에 들어 갑니다.(여기서 사용자계정은 윈도우 로그인 계정입니다. 또한 사용자 계정에 들어 갔을때 AppData 가 보이지 않을 수 있는데 여기서 그냥 강제로 입력..

[컴퓨팅 사고력]하노이탑 문제(Hanoi Tower Problem) 이해하기

하노이탑 문제는 이산수학이나 프로그래밍의 재귀 함수에서 자주 나오는 유형의 문제입니다. 오늘은 하노이탑의 원리에 대해 알아 보도록 하겠습니다. 하노이탑이 유래된 것은 인도 베나레스에 있는 한 사원에 세상의 중심을 나타내는 큰 돔이 있고 그 안에 세개의 다이아몬드 바늘이 동판 위에 세워져 있습니다. 이 바늘 가운데 하나에는 신이 64개의 순금 원판을 끼워 놓았습니다. 가장 큰 원판이 바닥에 놓여 있고, 나머지 원판들이 점점 작아지며 꼭대기 까지 쌓아 있습니다. 이것이 신성한 브라흐마의 탑입니다. 브라흐마의 지시에 따라 승려들은 모든 원판을 다른 바늘로 옮기기 위해 밤낮 없이 차례로 제단에 올라 규칙에 따라 원판을 하나씩 옮기는데요. 해당 규칙은 다음과 같습니다. 1. 한번에 하나의 원판만 옮길수 있다. 2..

비둘기집 원리에 대해 알아 봅니다.

문제를 풀다 보면 비둘기집의 원리에 의해서 이렇게 된다고 정의를 하는 문제 유형들이 많이 나오는데. 오늘은 비둘기집의 원리가 무엇인지 확인을 해 보겠습니다. 비둘기집의 원리는 정말 단순합니다. 비둘기집은 2개이고 비둘기는 3마리입니다. 비둘기가 저녁에 잠을 자기 위해 비둘기 집에 들어가야 되는데... 그렇다면 반드시 한개의 비둘기집에는 비둘기가 2마리 이상이 존재하게 된다는 원리입니다. 가령 1번집에 비둘기 3마리 2번집에 0마리, 혹은 1번집에 2마리 2번집에 1마리, 1번집에 1마리 2번집에 2마리,1번집에 0마리 2번집에 3마리 이렇게 4가지 경우의 수 밖에 없는데 이 4가지 경우의 수에서 반드시 한개의 집에는 2마리 이상이 존재 하게 된다는 것인데... 이러한 정의를 위키백과에서는 다음과 같이 귀..

프로그래밍은 문제해결능력이다.

제가 알고리즘 공부를 하면서 자주 보는 책중 하나가 구종만님이 지은 알고리즘 문제해결 전략 이라는 책입니다. 그 책의 서문에 다음과 같은 글이 있어서 인용해 봅니다. 프로그래밍은 문제해결이다. 프로그래밍을 하기 위해서는 많은 것을 알아야 합니다. 이렇게 많은 제약 조건과 요구사항을 이해하고 최선의 방법을 찾아내는 능력을 문제해결 능력이라고 합니다. 그러나 문제 해결 능력을 훈련하기란 굉장히 어렵습니다. 문제해결능력은 추상적인 기술이기 때문입니다. 그렇다면 이러한 문제 해결 능력을 훈련하기 위한 방법은 무엇일까요? 이 책에서는 여러 프로그래밍 대회에 참가하면서 문제해결 기술을 익혀 가는 것을 추천하고 있습니다. 오늘은 학생들에게 꼭 필요한 문제해결능력을 키우기 위한 방법에 대해 알아 볼까 합니다. 1. 많..

알고리즘 대회에서 입력 데이터를 만드는 경우의 수를 생각하기

대회 준비를 하기에 좋은 온라인 저지는 일반적으로 jungol.co.kr 이나 백준 사이트를 많이 이용하고 있습니다. 저는 두 군데를 자주 이용하고 있는 편인데요... 일단 두군데의 장점은 다음과 같습니다. jungol.co.kr 은 제출 후 채점시 실패가 나온 경우에 채점 데이터를 보여 줍니다. 초보자에게는 채점 데이터를 보면서 자신이 어느 부분에서 생각을 못했는지 알 수가 있기 때문에 큰 도움을 받게 됩니다. 하지만 백준 사이트에서는 채점데이터를 보여 주지 않고 실패라는 메시지만 출력 됩니다. 이 경우에는 자신이 어디에서 잘 못 생각 하고 있는지를 알 수가 없습니다. 하지만 대회에서는 백준 사이트 처럼 실패를 했을때 채점 데이터를 보여 주지 않습니다. 따라서 대회를 준비하기 위해서는 백준 사이트 처럼..

몬티홀 딜레마 퍼즐 풀어 보아요.

몬티홀 문제는 미국의 TV게임쇼에서 유래한 퍼즐인데요. 문제는 다음과 같습니다. TV 에서 퀴즈쇼를 진행 하는데 마지막 관문에서 세개의 문 중 하나에는 스포츠카가 숨어 있고 다른 두 개의 문에는 염소가 숨겨져 있습니다. 참가자가 세개의 문 중에서 하나를 선택하면 사회자는 나머지 두개의 문 중에 하나를 열어서 염소가 있는 문을 보여 주는데요. 이 때 사회자는 어떤 문에 스포츠카가 있고 어떤 문에 염소가 있는지를 알고 있습니다. 그리고 나서 참가자에게 "당신은 선택한 문을 바꾸시겠습니까?" 라고 묻습니다. 이 때 선택한 번호를 바꾸는 것이 유리할 까요 아니면 그냥 자신이 선택한 문을 고집하는 것이 유리할까 하는 것이 오늘의 문제입니다. 이러한 문제는 조건부확률을 배울때 퀴즈로 나오는 문제 중의 하나인데요. ..