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

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

강의자료 342

2016년 서울대학교 프로그래밍 경시대회 A번 문제 풀이

2016년 서울대학교 프로그래밍 경시대회 A번에 다음과 같은 문제가 나왔네요. 이 문제를 이해하는데 조금 시간이 걸렸는데요. 예제 입력에서 통닭 한마리 값이 10000원이고 두영이와 상언이가 50000원을 가지고 있는데 상언이가 몇마리를 더 먹을 수 있을까 묻는 문제인데요. 일단 이 문제에서는 두영이와 상언이는 치킨을 시킬때 마다 쿠폰을 받고 단골 손님인 상언이는 쿠폰을 가지고 시켰을 경우에도 쿠폰을 받는다 였는데 실수로 돈내고 시킬때도 상언이만 쿠폰을 받는 것으로 착각을 했던 문제네요.^^ 이만큼 문제를 읽는데 실수를 하면 많은 시간을 헤메이게 되는데요. (알고리즘 문제는 실생활속의 상황을 녹이기는 하지만 실생활과는 약간 다르기 때문에 문제를 정확히 이해하는게 새삼 중요하다는것을 느꼈네요.) 따라서 5..

알고리즘 대회 문제 풀이 시 문자열 입력 할때 gets 보다 fgets를 권장합니다.

C언어로 문자열 입력을 받을때 일반적으로 다음의 명령을 사용하게 됩니다. char str[101]; scanf("%s",str); 이렇게 scanf 로 입력을 받게 되면 "Hello World" 와 같이 스페이스가 있는 문자열은 "Hello" 만을 입력 받게 됩니다. 따라서 scanf 입력시에는 문자열 중에서 단어별로 입력을 받을때 자주 사용하게 됩니다. 하지만 알고리즘상 스페이스를 같이 입력 받아야 할때가 있습니다. 위와 같이 "Hello World" 를 입력 받아서 2개의 단어로 처리 해야 하는지 또는 단어를 분리해야 하는 경우등이 있을수 있는데... 이때는 일반적으로 gets(str) 과 같이 gets 함수를 사용하게 됩니다. 그런데 이 gets() 함수가 치명적인 결함을 가지고 있는데 어떤 문제인..

정보올림피아드 시험환경을 확인 하여 주세요.

정보올림피아드 시험환경은 온라인으로 PC를 이용하여 시험을 치루게 됩니다. 1교시에는 유형1(비버챌린지 유형) 유형2(기존 이산수학) 문제를 풀게 됩니다. PC 환경은 웹브라우저를 이용해서 문제를 풀이 하게 됩니다. 이때 PC에 설치 되어 있는 계산기를 사용해도 되는지 문의를 해 본 결과 PC에 설치 되어 있는 계산기를 이용하다 적발시 부정행위로 간주 된다고 합니다. 따라서 1교시에 유형1 유형2 의 문제를 풀이 할때는 연습장을 이용하여 문제를 풀이 할 수 있도록 하시기 바랍니다. 하지만 2교시 실기문제를 풀 때에는 PC에 설치 되어 있는 계산기를 이용하여 먼저 알고리즘을 생각 한 후 계산기를 이용하여 이 알고리즘이 맞는지를 생각해 볼 수 있습니다. 2교시에는 PC에 설치되어 있는 계산기를 이용하는 것이..

[문자열 알고리즘] KMP 알고리즘

KMP 알고리즘이란? 위키백과에 따르면 커누스(Knuth),모리스(Morris),프랫(Pratt) 이 발견한 문자열 일치 문제에 대해 패턴정보를 활용하여 검색시간을 단축하는 방식 이라고 정의 되어 있습니다. 이러한 문제는 다음과 같은 경우에 빠른 시간에 문자열을 검색하기 위한 알고리즘인데요. 위와 같이 네이버에서 원당컴퓨터학원을 찾기 하면 원당컴퓨터학원이라는 글자에 표시가 되는 것을 조금 더 빠르게 해결하기 위한 패턴입니다. KMP 알고리즘을 이해 하기 전에 먼저 브루트포스법 이라고 하는 알고리즘을 살펴 보겠습니다. 만약 문자열 S="ABCDABCDABBABCDABCDWZ" 가 있고 찾을 문자열 P="ABCDABCWZ" 라는 문자열이 있다면 우리가 알고 있는 알고리즘은 다음과 같습니다. ABCDABCDA..

초등학생 학부모님의 질문에 대한 답변을 올려 봅니다.

어느 학부모님이 물어 보신것을 질답 형태로 답변을 드려 봅니다. 1. 초등학생이 정보올림피아드 시험을 보면 무엇이 좋은가요? - 일단 학생이 정보올림피아드 출전을 하면서 준비한 만큼 그 학생의 정보에 대한 자신감이 쑥쑥 커져 있습니다.(정보올림피아드 수상을 했든 하지 않았든 학교에서는 자기보다 정보쪽에 더 잘 하는 학생이 별로 없습니다. 그만큼 정보 올림피아드 문제들이 쉽지 않습니다.^^) 2. 초등학생때 정보올림피아드 수상하면 영재고나 과고 입학할때 유리 할까요? - 아니라고 말씀드리고 싶네요. 초등학생때 정보올림피아드 수상 실적이 고등학교 입학과는 별개입니다. 중학교에서 정보올림피아드 수상 실적은 고등학교 입학시 수상내역은 기록하지 못해도 자기소개서 등에 녹여서 이야기는 할 수 있어도 초등학교때 받은..

비버챌린지 2014 아이스크림

LIFO 아이스크림 가게에서는 아이스크림을 당신이 요청한 정확한 순서대로 콘에 쌓아 놓았습니다. 위에 놓인 순서대로 놓인 아이스크림을 주문한 순서는 어떻게 됩니까? ... Chocolate, Smurf and Strawberry! ... Strawberry, Smurf and Chocolate! ... Chocolate, Strawberry and Smurf! ... Strawberry, Chocolate and Smurf! 정답) 아래 드래그 해서 보세요. ... Strawberry, Smurf and Chocolate! 이 문제는 컴퓨팅 과학을 처음 접하는 학생들에게 일련의 순서에 따른 결과값을 보여주는 훈련을 하는 문제 입니다. 위와 같은 일련의 작업들은 일상생활에서 아무렇지도 않게 일어나는 일들이..

프로그래밍 을 잘 하기 위한 팁

정보올림피아드 본선에 진출 하기 위해서는 이제는 수학 문제 뿐만 아니라 어느 정도의 프로그래밍 실력도 필요하게 되었습니다. 실제로 몇년전만 해도 정보올림피아드 본선대회에 진출하기 위해서는 지역대회 예선에서 필기문제 통과후 지역대회 본선에서는 프로그래밍 문제를 통과 해야만 전국 본선에 진출 했던 적이 있었습니다. 이렇게 예선과 본선으로 나누어지지는 않지만, 올해 부터는 지역예선에서 필기문제(수학)와 프로그래밍 구현능력(50~60%)이 부활되었습니다. 그래서 오늘은 프로그래밍을 잘 하기 위한 팁을 살펴 보도록 하겠습니다. 1. 주석을 먼저 작성하자. - 실제로 프로그래밍을 구현할때 설계가 가장 중요합니다. 이러한 설계 내용을 먼저 주석으로 어떤 흐름으로 작성할 것인지 주석 처리를 해 놓는다면 구현할때 그 시..

2014 비버챌린지 - 보트의 창문 문제입니다.

보트의 창문은 투명한 창과 회색 창으로 색칠되어 있습니다. 보트 옆에 서서 한 번에 두 개의 반대쪽 창문을 들여다 볼 수 있습니다. 아래 그림과 같이 때에 따라 두 창 모두의 색상은 새로운 색상으로 나타납니다. 다음 그림과 같은 두개의 보트가 있습니다.이 두 보트가 아래와 같이 겹쳐져 보일때 투명하게 보이는 창문이 어떤것인지 선택하세요. 이 문제의 정답은 다음과 같습니다. 이 문제에서 요구하는 능력은 다음과 같은 컴퓨팅 사고력을 키워 주기 위함입니다. 컴퓨터는 전류의 크기를 가지고 움직이는 기계입니다.따라서 전류를 일정 크기 이상일때 숫자 1 이라고 판단하고 일정 크기 이하 일때 숫자 0 이라고 판단합니다.따라서 컴퓨터는 0 과 1 만을 가지고 모든것을 처리 하는 이진법 체계로 명령어 체계가 되어 있습니..

정보올림피아드(KOI) 대비 팁

1. 주어진 시간내에 문제를 해결하는 능력을 키워야 합니다.- 저희가 학생들에게 항상 하는 이야기는 문제를 이해하는 것이 이 문제를 풀 수 있는 70프로 이상의 능력이라고 합니다.나머지 30프로가 문제를 풀어 나가는 해법입니다. 문제 자체를 이해하고 그 문제가 어떤것을 요구하는지 입력 데이터와 출력 데이터를 보고 손으로 먼저 해결 할 수 있는 능력이 있으면 그 문제의 절반은 해결한것으로 볼 수 있습니다.이러한 능력을 키우는 방법은 많은 문제를 풀어 보는 것이 정답이겠네요.2. 입출력 부분을 확실하게 검증한다.- 프로그래밍 언어의 입출력 명령과 다양한 입출력 옵션을 제대로 이해 하고 있어야 합니다. 소스코드를 제출 했을때 스페이스(공간) 하나 차이로 sucess 또는 fail 이 나오기도 합니다. 따라서 ..

분할 정복과 동적 계획법을 이용한 기초 프로그래밍

올해 정보올림피아드 부터는 본선 진출을 위해서는 기본적인 알고리즘을 익히고 어떤 문제가 주어졌을때 그것을 프로그래밍으로 구현을 할 수 있는 능력이 있어야 할것 같습니다.기출문제 유형의 1,2번 문제 유형이 나온다고 하니 수학만 잘하는 학생이 급하게 C언어 문법을 익히고 문제를 해결함으로 본선에 진출했던 작년과 같은 경우와는 접근 방식을 다르게 접근해야 할것 같네요.일단 초등부 1,2번 문제는 기본적인 문법과 실생활에서 어떤 규칙을 찾아서 접근한다면 충분히 해결 할 수도 있을것으로 판단이 됩니다.하지만 중등부 1번 문제 까지는 어느정도의 문법과 문제에서 어떤 것을 요구하는지를 찾아 낸다면 해결이 가능 할 수 있겠지만 2번 유형은 아무래도 어느 정도 알고리즘을 접한 학생이 유리 할 수 밖에 없을것 같네요.오..