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

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

강의자료 346

[C#]지뢰찾기 게임

목표 - 버튼을 동적으로 생성하는 방법에 대해 알아 보자 - 알고리즘 시간에 배운 DFS/BFS 알고리즘을 활용하여 주변으로 확장하는 방법에 대해 알아 보자. 폼구성 폼에 버튼을 생성할 panel을 하나 올리자. 소스코드 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 9..

강의자료/C# 2021.02.24

[알고리즘] Lazy Propagation 알고리즘

Lazy Propagation 이란? 기존 세그먼트 트리에서 i 에서 j 까지의 구간을 업데이트 하기 위해서는 수행시간은 O(NlogN)의 시간이 걸리게 된다. 이 구간 없데이트 시간을 단축 시키기 위한 알고리즘이 필요한데 이때 사용하는 알고리즘이 Lazy Propagation(게으르게 전파) 알고리즘이다. 이 알고리즘의 수행 속도는 O(logN) 이다. Lazy Propagation 동작 방법 배열 {1,2,3,4,5} 가 있는 구간합의 예를 살펴 봅니다. 세그먼트 트리 구현시 다음과 같은 트리가 생성 됩니다. 이때 0번지 부터 2번지까지에 3을 더해 준다고 하면 다음과 같이 계산이 됩니다. 파랑색 부분을 계산하면서 노랑색 부분은 (0~1) 위치는 2번, (0~2) 위치는 3번, (0~4) 위치는 3번..

[컴퓨팅 사고력] 사이다 와 콜라의 내용물을 바꿔 보자

길동이는 커피숍에서 아르바이트를 하고 있습니다. 손님이 와서 콜라와 사이다를 주문하였는데~ 길동이는 잠깐 다른 생각을 하느라고 콜라잔에 사이다를 채우고 사이다잔에 콜라를 채웠습니다. 이대로 손님에게 드린다고 하면 손님은 항의를 할것 이고~ 이것을 다시 버리고 새로 사이다 콜라를 따르게 되면 길동이의 아르바이트 비용에서 사이다 콜라 값을 변상해야 됩니다. 우리가 길동이의 고민을 풀어 주세요. 문제풀이 1단계) 빈 컵을 가져 와서 콜라잔에 든 사이다를 붓고 콜라잔을 깨끗이 씻는다. 2단계) 사이다잔에 든 콜라를 콜라잔에 붓고 사이다잔을 깨끗이 씻는다. 3단계) 빈컵에 있던 사이다를 사이다잔에 붓는다. 컴퓨팅 사고력 이 문제는 프로그래밍 구현시에 다음과 같이 두개의 변수값을 변경하는 경우에 사용되는 방법입니다..

[C#] C#에서 MDB(Access DataBase) 다루기

목표 - MDB(Access DataBase) 파일이 없을때 생성해 보기 - MDB(Access DataBase) 를 이용해서 데이터베이스 명령어(Sql문 - insert,select,update 등)을 확인하기 준비 폼구성 panel - Dock : Bottom label : 4개 - 아이디/이름/핸드폰/학교/학년 textbox : 4개 - 아이디/이름/핸드폰/학교/학년 ContextMenuStrip : 삽입/삭제 추가 datagridview - Dock : Fill / ContextMenuStrip : ContextMenuStrip1 소스코드 - 데이터베이스 생성 1 2 3 4 5 6 7 8 9 10 11 12 private void mdbFileCreate(string strDBName) { Str..

강의자료/C# 2021.02.18

[C#] Excel 파일 다루기

목표 - 보고서 를 엑셀파일로 저장하는 방법 등에 대해 다루어 봅니다. - 엑셀 파일을 읽어 보고 저장 하는 방법등을 배웁니다. - DataGridView 사용법을 확인합니다. 컴포넌트 설명 - DataGridView : 테이블 형태의 데이터를 화면에 뿌려 주는데 DB와 바인딩해서 사용이 가능하며 개발자가 수동으로 갱신할 수 있다.(이번 프로젝트에서는 수동으로 갱신하는 방법을 활용해 본다.) 준비 - Office / SharePoint Developmen 를 추가 설치 합니다. - 참조관리자에서 Microsoft Excel 16.0 Object Libray/Microsoft Office 16.0 Object Libary 추가 폼구성 - panel : Dock - Top - Button : 2개 - Exc..

강의자료/C# 2021.02.16

[컴퓨팅 사고력]해시(Hash)테이블 이해하기

길동이는 주차장에서 일을 하고 있습니다. 주차장은 5개 구역으로 나누어져 있고 1개 구역에는 10대씩을 세워 둘 수 있습니다. 길동이가 하는 일은 손님이 오면 손님의 차를 대신 주차 구역에 주차를 시켜 주고 찾으러 오면 차를 찾아서 전달해 주는 역할을 합니다. 하지만 차가 많아지면서 차를 어디에 두었는지 찾기가 힘들어 졌는데요~ 꾀 많은 길동이는 다음과 같은 아이디어를 생각해 냈습니다. 차의 뒷번호를 확인해서 뒷번호가 1,6 이면 1번 구역에 2,7이면 2번 구역에 3,8 이면 3번 구역에 4,9이면 4번 구역에 5,0 이면 5번 구역에 주차를 해 놓은 후에 손님이 찾는 번호만 확인하여 그 위치를 찾아 주었습니다. 그런데 하루는 50대를 주차 할 수 있는 주차장에 5대 밖에 주차를 하지 않았는데 1번구역..

[C#] IKeyboardMouseEvents 객체를 활용하여 화면보호기를 만들어 보자

목표 - IKeyboardMouseEvents 를 활용하여 마우스,키보드,커서 등을 후킹하는 방법을 살펴 보자 준비 MouseEvent 를 후킹하기 위해서 Nuget관리자에서 MouseKeyHook 설치 폼구성 폼의 속성 FormBorderStyle: None WindowState : Maximized Timer :StartTimer,LockTimer,timer1 PicturBox:pictureBox1 Resources 에 1.jpg,2.jpg 를 추가(화면보호기에서 두개의 이미지를 번갈아 화면에 뿌려줌) 소스코드 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39..

강의자료/C# 2021.02.03

[컴퓨팅 사고력] 피보나치 수열

피보나치 수열이란? 피보나치 수열의 유래는 피사의 레오나르도로 알려진 레오나르도 피보나치가 1202년 토끼의 번식을 언급하면서 이 수에 대해 연구하기 시작되었으며 다음과 같은 수열을 피보나치 수열이라고 합니다. 1항 2항 3항 4항 5항 6항 7항 8항 9항 10항 1 1 2 3 5 8 13 21 34 55 이 수열의 규칙은 1항과 2항은 각각 1이고 3항 부터는 전항과 전전항의 값을 더한 값이 됩니다. 피보나치 수열에 관한 문제유형 일반적으로 피보나치 수열을 응용한 문제가 정보올림피아드 수학에서 종종 나오고 있으며 특히 알고리즘 분야에서는 동적알고리즘을 배울때 처음 만나게 되는 수열중에 하나 입니다. 그렇다면 정보올림피아드에서 나왔던 기출문제를 풀어 보겠습니다. 정보올림피아드 2003년 초등부 10번 ..

[초등 사고력 풀이비법] 합과 차의 관계를 이용해 해결하기

이러한 유형의 문제는 정보올림피아드 기출문제 유형에서 자주 볼 수 있는 유형인데요. 합과 차에 관한 문제는 크고 작은 두 수의 합을 알고 또 이 두 수의 차이를 알고 있을때 두 수를 구하는 응용 문제입니다. 예를 들면 " 길동이가 가지고 있는 필통에서 연필을 2자루 꺼내니 길순이가 가지고 있는 필통의 연필의 개수가 같습니다." 라고 한다면 길동이는 길순이보다 2개 더 많은 연필을 가지고 있음을 알 수 있습니다. 이러한 원리를 응용하여 풀어 볼 수 있는 문제는 다음과 같습니다. 1. 구슬 111개를 길동이와 길순이가 나누어 가졌습니다. 이때 길동이가 가지고 있는 구슬이 길순이가 가지고 있는 구슬 보다 33개가 더 많다면 길동이가 가지고 있는 구슬은 몇개 이겠습니까? 더보기 길동이가 가지고 있는 구슬을 X개..

[컴퓨팅 사고력]블록쌓기 게임으로 스택 구조 이해하기

두 사람이 각각 하나의 블록을 쌓거나 내려 놓을 수 있는 놀이를 한다고 가정할 때 두 사람이 만들어 낼 수 있는 블록 모양을 생각해 보자. 각 블록에는 수가 쓰여져 있으며 이 수들은 절대 두번 이상 나오니 않는다. 또한 두 사람은 블록에 쓰여진 수에 따라 차례대로 쌓을 수 있으며 한번 쌓여진 블록은 다음 사람에 이해서 내려지면 다시는 사용할 수가 없다. 다음 블록의 모양을 보고 두 사람이 어떻게 블록을 쌓아 올라갔는지 생각해 보자. 가) 의 경우는 두사람이 차례대로 1,2,3,4 를 쌓아 올린 것이다. 나) 의 경우에는 첫번째 사람이 1을 올리고 두번째 사람이 2를 올린것을 첫번째 사람이 2를 내린 후 두번째 사람이 3을 올리고 첫번째 사람이 4를 올렸음을 알 수 있다. 즉 첫번째 사람은 1,4를 올리고..