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

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

강의자료 342

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

문제를 풀다 보면 비둘기집의 원리에 의해서 이렇게 된다고 정의를 하는 문제 유형들이 많이 나오는데. 오늘은 비둘기집의 원리가 무엇인지 확인을 해 보겠습니다. 비둘기집의 원리는 정말 단순합니다. 비둘기집은 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 은 제출 후 채점시 실패가 나온 경우에 채점 데이터를 보여 줍니다. 초보자에게는 채점 데이터를 보면서 자신이 어느 부분에서 생각을 못했는지 알 수가 있기 때문에 큰 도움을 받게 됩니다. 하지만 백준 사이트에서는 채점데이터를 보여 주지 않고 실패라는 메시지만 출력 됩니다. 이 경우에는 자신이 어디에서 잘 못 생각 하고 있는지를 알 수가 없습니다. 하지만 대회에서는 백준 사이트 처럼 실패를 했을때 채점 데이터를 보여 주지 않습니다. 따라서 대회를 준비하기 위해서는 백준 사이트 처럼..

(기하알고리즘) 반직선의 교점찾기 2

https://wondangcom.com/903 (기하알고리즘) 반직선의 교점 찾기 1 지난번에 두 선분의 교점 찾기에 대해 설명을 해 드린적이 있는데요. https://wondangcom.com/466 기하알고리즘] 두 선분의 교차점 찾기 위와 같은 그림에서 교차점이 발생하는 경우는 a,c,d,h 인 경우 입니다. 이.. wondangcom.com 지난번에 반직선의 교점 찾기 위해서 기본적인 클래스를 구현해 보았는데요. 오늘은 지난번에 만들어 놓은 클래스와 함수들을 이용해서 다음의 문제를 풀어 보도록 하겠습니다. 문제 원본 : http://jungol.co.kr/bbs/board.php?bo_table=pbank&wr_id=2555&sca=30d0 JUNGOL | 반직선이 만나는 경우의 수 > 문제은행..

(기하알고리즘) 반직선의 교점 찾기 1

지난번에 두 선분의 교점 찾기에 대해 설명을 해 드린적이 있는데요. https://wondangcom.com/466 기하알고리즘] 두 선분의 교차점 찾기 위와 같은 그림에서 교차점이 발생하는 경우는 a,c,d,h 인 경우 입니다. 이러한 두 선분의 교차점을 검사하는 방법으로는 다음과 같이 찾아 볼수가 있습니다. 1] 각 선분에 대해서 그 선분을 포함하는 양방향으로.. wondangcom.com 오늘은 반직선의 교점 찾기에 대해 설명을 해 볼까 합니다. 반직선은 한쪽은 막혀 있고 다른쪽 방향으로 진행을 하는 화살표를 가진 직선을 반직선이라고 합니다. 반직선의 교점을 찾기 위해서는 먼저 직선의 교점을 찾는 방법에 대해 확인을 해 봐야 하는데요. 지난번의 두선분의 교점은 시작점과 끝점이 주어졌기에 그 위치에서..

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

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

도전하세요. 생각하며 만드는 프로그래밍 트레이닝 소개

원본 파일 : http://www.cberi.go.kr/home/sub.do?menukey=252&mode=view&no=1000618272 충청북도교육연구정보원 - 정보올림피아드 자료실 상세보기 정보시스템 고도화 고품질 서비스 제공 www.cberi.go.kr 충청북도 교육연구 정보원에서는 충북 학생 정보올림피아드(COI)를 준비하는 학생 및 지도 선생님을 위한 도전하세요 생각하며 만드는 프로그래밍 이라는 책자를 배포하고 있네요. 충청 북도에서는 학생 정보올림피아드를 자체적인 대회를 열고 있습니다. 대회 내용은 추진내용 및 일정 분야 : 수학적 지식 및 논리적 사고능력을 필요로 하는 알고리즘과 그 구현을 경시 학교대회 : 교내대회로 3~5월 중 실기평가 실시 안내 (학교자체계획에 의거하여 시기 및 평가..

2019년 정보올림피아드 지역대회 후기

이번에 전국에서 3600명 가량이 응시해서 전년도 7000명 보다는 조금 낮은 응시율을 보였지만 그래도 제가 처음 생각할때 너무 적은 인원이 응시할까봐서 걱정한거에 비하면 정말 많은 인원이 응시를 한것으로 미루어 요즘에 정보올림피아드 라는 대회가 많이 알려진것은 아닐까 라는 생각을 해 보게 되었습니다. 특히나 초등부의 수상 커트라인에 깜짝 놀랐습니다. 사실 저는 초등부의 커트라인을 이렇게 높게 나올거라고는 생각을 못했고 오히려 중등부에서 조금 낮은 감이 있었네요. 초등부는 일반적으로 6개월에서 1년정도 준비하면 오래 준비한 학생으로 알고 있었던 터라서... 초등부에서 2번 만점을 모두 맞기는 어려울것으로 판단 했거든요. 그런데 초등부의 점수가 높았던 이유를 분석해 보면 대체로 실기 문제 1번은 100점을..

2개의 계란

구글,아마존,MS 등의 기업 문제에서 나왔다고 하는데요... 문제가 재미있어서 풀어 보게 되었습니다. 문제풀이) 계란이 여러개 있다면 이진탐색으로 해법을 찾아 나가면 아주 간단한 문제였습니다. 만약 100층 건물이라고 한다면 50층 25층 13층 7층 4층 2층 1층 절반씩으로 나누어서 깨지면 절반 아래로 안 깨지면 절반 위로 올라가면서 떨어뜨려 보면 7번 만에 어디서 깨지는 지를 찾을 수 있는 문제였습니다. 그런데 예제 데이터를 보니 10 -> 4, 100->14 문제를 자세히 살펴 보니 2개의 계란이라는 조건이 붙어 있습니다. 만약 50층에서 떨어뜨렸을때 깨진다면 남은 한개를 가지고 1층 부터 49층까지 올라가면서 떨어 뜨려 보면 최악으로 50번이 나오는 것을 확인 할 수 있었습니다. 그래서 다시 한..

KOI (정보올림피아드) 가상머신에서 코드블럭 컴파일 오류가 발생하는 현상에 대한 해결 방법입니다.

koi-2019-v1.1.ova 한국정보올림피아드 응시환경이 올라와서 실제 환경에서 구동을 해 보게 되었습니다.(아이디 contestant/ 비번 koi) 위의 자료를 다운로드 받아서 버추얼 박스 환경에서 실행을 한 후에 코드블럭으로 실행을 해 보았습니다. 코드블럭을 실행 후 위와 같이 바탕화면에 test라는 프로젝트를 생성했습니다. 그랬더니 역시나 아래 로그화면과 같이 error : obj/Debug/main.o : 그런 파일이나 디렉터리가 없습니다. error : no input files 라는 에러가 발생하네요. 이러한 부분은 윈도우즈에서는 발생하지 않는데요. 리눅스에서 권한 부분때문에 나타나는 현상입니다. 컴파일을 하게 되면 exe 파일이 만들어 지기 전 object 파일이 먼저 생기게 되는데요...