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

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

강의자료 335

프로그래밍 대회에 능숙해 지기 위한 방법

자료 출처 - 알고리즘트레이닝 이 표는 프로그래밍인사이트에서 출간한 알고리즘 트레이닝 서적을 인용했습니다.국내 정보 올림피아드를 준비하는 학생이라면아시아정보올림피아드 또는 국제정보올림피아드 에서의 출제 유형을 확인하고 그에 따른 기법들을 연구하고 숙지할 필요가 있을것입니다.국내 정보 올림피아드 또는 국내 알고리즘 대회 역시 이러한 대회의 문제와 유형이 비슷할 것입니다. 또한 경진대회(프로그래밍 대회) 에 능숙해 지기 위해서는 알고리즘을 설계한 후에는 반드시 다음과 같은 질문을 해 보아야 한다고 조언 하고 있습니다. 1. 범위 내에 최대입력이 주어졌을때, 현재 만든 알고리즘의 시간 및 공간 복잡도가 그 문제의 시간 및 메모리 제한을 통과 할 수 있는가?- 실제 프로그래밍 대회에서는 제대로 작동하는 알고리즘..

영재란?

I. 영재의 정의- 영재란 어떤 사람인가에 대한 관점은 오래 전부터 있었으나 아직까지 그 정의에 대하여 일치된 견해를 찾아보기가 힘들다. “영재교육의 시조인 Terman은 IQ 135이상인 자를 일컬어 영재아라 정의하였다. 그러나 해를 거듭하면서 사회성이나 지도력, 높은 성취동기, 예능 분야에까지 그 범주를 넓혀서 광의의 의미로 영재성을 해석하고 있다. 최근에는 ‘영재’라는 용어를 정의할 때 창의성, 일에 대한 집착력, 지도 능력 등 보다 포괄적인 요인들을 포함하려는 경향을 보이고 있다”- Marland는 “영재는 전문가에 의해 뛰어난 능력으로 인하여 훌륭한 성취를 할 것으로 보이는 사람으로 판별된 아동으로 자신과 사회에 기여하기 위해 정규학교가 제공하는 것 이상의 특별한 교육 프로그램이나 도움을 필요로..

에라토스테네스의 체 알고리즘 구현 방법

에라토스테네스의 체는 소수를 찾는 방법입니다.고대 그리스 수학자 에라토스테네스가 발견하여 에라토스테네스의 체라고 이야기 하는데요. 원리는 다음과 같습니다.먼저 0 과 1은 소수가 아니라고 마킹을 해 놓고 2부터 찾아 가면서 해당 수가 소수라면 소수의 배수들을 모두 너는 소수가 아니야 라고 마킹을 해 놓는 것입니다. 예를 들면 2를 만났을때 2의 배수 4,6,8,10,.... 등과 같은 모든 짝수들에 대해서 소수가 아니라는 것을 마킹하는 것이죠.그리고 3을 만나면 3의 배수 6,9,12,15.... 등과 같이 3의 모든 배수들을 소수가 아니라고 마킹을 합니다.4를 만나면 이미 소수가 아니라고 마킹이 되어 있기 때문에 그 배수들은 확인 할 필요가 없습니다.5를 만나면 5의 배수들에 대해서도 마찬가지로 소수가..

cin cout 사용시 타임아웃 발생-> 시간초과 해결하는 방법

제가 몇주 전부터 알고리즘 상으로는 최대 600만번 계산이 되어 시간초과가 나올 수가 없는데 (알고리즘상 1초당 최대 1억번 연산 처리를 기준으로 함) 계속해서 타임아웃이 발생하더라구요. 무엇이 문제인지 몰라서 알고리즘은 맞는데 구현이 잘못 된 줄 알고 수십번도 더 제출해 보았는데요...결국 몇주동안 풀지 못했던 문제가...scanf,printf 를 사용하지 않고 cin cout 을 사용해서 타임아웃이 걸렸다는 것을 아는 순간 맥이 쫙 빠지네요...ㅠ.ㅠ 알고리즘으로는 전혀 문제가 없는데 또 다른 알고리즘을 요구하는 문제인줄 알고 알고리즘 해법을 찾으러 구글링 하다가 도저히 해법을 못찾아 포기했던 문제였는데요.. 우연한 계기로 cin cout 이 scanf printf 보다 컴파일 속도가 느린것을 확인했..

유클리드 호제법 증명

유클리드 호제법은 2개의 자연수 또는 정수의 최대 공약수를 구하는 알고리즘의 하나 입니다.정보올림피아드에서 2개의 최대 공약수를 구하는 문제가 종종 나오는데...이때 유클리드 호제법을 이용해서 문제를 풀어 나가면 훨씬 빠르고 유용하게 사용할 수 있습니다.예를 들면 131 과 109 의 최대 공약수를 구하는 문제같은 경우 131이 3의 배수인지 아닌지 판단 하고 109가 3의 배수인지 아닌지 판단 하는 것보다는 다음과 같이 구하면 훨씬 수월하게 풀릴것 같네요.131 % 109 = 22 이므로22 와 109 의 최대공약수와 동일 하고...109 % 22 = 21 따라서 22와 21의 최대 공약수와 동일 하기 때문에 최대공약수는 1이 나오게 됩니다.131이 소수인지 아닌지 판단 하는 것보다 이렇게 판단하는 것..

2017 정보올림피아드 지역대회 고등부 50번 문제풀이

문제풀이) g(0)=1,g(1)=1,g(2)=2를 반환한다고 되어 있는데...여기서 g의 함수가 무엇을 하는지 먼저 살펴볼 필요가 있을것 같습니다.g(11)이 들어 간다고 하면 i,j,k 가 0 부터 11까지 3중 반복이 됩니다.그런데 어떤 경우에 f(i,j,k) 를 호출해서 r에 누적을 해서 누적한 값을 리턴하게 됩니다.어떤 경우냐 하면 i + 2*j + 3*k == 11 인 경우에 해당합니다.그렇다는 얘기는 다음과 같은 경우에 f(i,j,k)를 호출한다고 볼수 있겠네요.i,j,k 는 다음과 같은 경우 호출 될것 같습니다.i j k 11 0 0 9 1 0 7 2 0 5 3 0 3 4 0 1 5 0 8 0 1 6 1 1 4 2 1 2 3 1 0 4 1 5 0 2 3 1 2 1 3 2 2 0 3 0 1 3..

별찍기 원리에 대해 알아 봅니다.

저희가 아이들과 공부를 하다 보면 별을 찍는 규칙을 많이 어려워 하더라구요. 별을 찍는 형태는 다음과 같은 형태가 나타납니다. -*****--***---* 이런 경우 프로그램은 다음과 같이 반복문을 구성해 주어야 합니다. 먼저 행이 3행이므로 한행 한행 진행하기 위해서는 3번 반복을 해 주어야 합니다. 다음과 같이1행2행3행이렇게 반복을 해야 되므로 for(int i=1;i

2018년 정보올림피아드 지역대회 초등부 33번 문제풀이

오늘은 2018년 정보올림피아드 지역대회 초등부 33번 문제를 풀어 보겠습니다. 이번 문제는 while 문과 do while 문의 사용법과 후치증가 후치감소 등의 연산 작업 하는 내용을 확인하는 아주 간단한 내용입니다. 먼저 a=2, b=2 로 초기화 되어 시작 됩니다. while(b) 문장은 b가 0 이 되면 빠져 나갑니다.b가 0 이 되기 전에a=3, b=1a=4, b=0 이 되어 a=4 에서 while 문을 빠져 나가고..그 다음 do while 문에서는 a가 0 이 되면 빠져 나가는 문장입니다.따라서a=3,b=1a=2.b=2a=1.b=3a=0,b=4 따라서 b를 출력하므로 정답은 2번 입니다. 정보올림피아드 문제 풀이 리스트 정리

C언어에서 문자열이 한글인지 확인 하는 방법

오늘은 학생이 c언어에서 문자열이 입력 되었을때...영문자 이거나 한글에서 맨 앞의 한글자만 출력해야 하는데 어떻게 하는지 묻길래 C언어에서 한글인지 영문인지 체크하는 방법을 알아 볼까 합니다. 먼저 다음과 같이 char Kor[] = "한글";char Eng[]="English";과 같이 변수를 선언하면서 데이터를 입력하면먼저 strlen(Kor) 을 출력해 보면 4 또는 6이 나오는 것을 확인하실 수가 있는데요.이것은 컴파일러마다 조금씩 다르기는 하지만 한글 같은 경우 2byte 혹은 3바이트를 사용하기 때문입니다.그렇다면 Kor[0] 을 출력하면 당연히 "한" 이라는 글자는 출력 되지 않을 것입니다. 먼저 이러한 원리를 이해하기 위해서는 ASCII 코드를 이해 해야 되는데요.이미지 출처 - http..

코드블럭(Code Block) 자동완성 기능 설정

코드블럭(Code Block)을 사용하면 다음과 같이 철자를 몇개 입력하면 거기에 맞는 함수가 자동으로 나오게 됩니다.이렇게 나오면 거기에서 선택을 하거나 보면서 칠 수도 있는데... 저희 학생 중에 한명이 집에서 코드블럭을 설치했는데 이러한 자동완성 기능이 안된다고 물어 보네요.이러한 자동완성 기능이 안되면 무척이나 많이 불편한 부분이 있습니다.실제로 머리가 그렇게 썩 좋지 못한 저도 정말 많이 사용하는 함수들이나 그냥 사용하지 가끔가다 사용하는 함수는 철자도 정확하지 않아서 비슷한 단어를 써 보면서 그 함수를 찾는 경우가 많거든요. 사실 프로그래밍 하는 입장에서 이러한 함수들을 모두 다 외워야 하는 것은 정말 비효율적이지 않을까 생각 해 보게 되네요.이러한 함수들을 외우는 것 보다 좀더 좋은 알고리즘..