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

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

강의자료/정보영재

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

원당컴퓨터학원 2018. 12. 13. 11:59

자료 출처 - 알고리즘트레이닝 

이 표는 프로그래밍인사이트에서 출간한 알고리즘 트레이닝 서적을 인용했습니다.

국내 정보 올림피아드를 준비하는 학생이라면

아시아정보올림피아드 또는 국제정보올림피아드 에서의 출제 유형을 확인하고 그에 따른 기법들을 연구하고 숙지할 필요가 있을것입니다.

국내 정보 올림피아드 또는 국내 알고리즘 대회 역시 이러한 대회의 문제와 유형이 비슷할 것입니다.


또한 경진대회(프로그래밍 대회) 에 능숙해 지기 위해서는 알고리즘을 설계한 후에는 반드시 다음과 같은 질문을 해 보아야 한다고 조언 하고 있습니다.


1. 범위 내에 최대입력이 주어졌을때, 현재 만든 알고리즘의 시간 및 공간 복잡도가 그 문제의 시간 및 메모리 제한을 통과 할 수 있는가?

- 실제 프로그래밍 대회에서는 제대로 작동하는 알고리즘 중에서 제일 단순한 것을 선택하는 것이 좋은 전략일 수 있습니다. 하지만 연습 시간 처럼 시간 제약이 없는 상황에서는 더 많은 시간을 투자하여 가장 좋은 알고리즘으로 문제를 풀어 볼 필요가 있습니다. 

-이러한 시간 및 공간 복잡도를 계산하기 위해서는 빅오(O) 표기법을 이용한 계산법을 익히고 그에 따른 충분한 연습을 해 보는 것이 좋을것 같습니다.


2. 프로그래밍 언어에 능숙해 지자.

-ICPC에서 사용할 수 있는 언어는 C,C++,JAVA 등 여러가지 언어가 있습니다. 그중 어떤 언어를 목표로 해야 할까요?

2012년도 IOI 규정에 따르면 C,C++,파스칼 언어 ICPC에서는 C,C++,JAVA 등이 있습니다.

IOI 에서 2015년도 부터는 JAVA도 대회 언어에 포함이 되어 있지만...

이처럼 C,C++ 과 같은 경우는 어떤 대회를 막론하고 지원을 해 주고 있는 언어 입니다.

그 중에서도 C++ 같은 경우는 STL(표준 템플릿 라이브러리)가 내장 되어 있어서 C++을 우선순위로 공부하는 것이 좋습니다.

C++이 능숙해 진다면 그 다음 JAVA 언어도 능숙해 지면 좋은데요. 그 이유는 자바는 속도가 느린 편이긴 하지만 그래도 언어 안에 BigInteger,BigDecimal,GregorianCalendar,Regex 등의 강력한 라이브러리 및 API가 내장되어 있기 때문에 C++의 unsigned long long 타입으로 해결하지 못하는 64비트 이상의 수를 처리 할때 유용하게 사용할 수가 있기 때문입니다.


3. 코드를 테스트 하는 기술에 능숙해 지자.

- 프로그래밍 대회에 따라서 부분점수를 받을 수도 있고 그렇지 않은 경우도 있습니다. 하지만 어느 경우든 간에 여러분은 질이 좋고 다양하면서도 까다로운 테스트 케이스를 만들어 낼 수 있어야 합니다.

- 국제대회 뿐 아니라 국내 정보올림피아드 대회에서도 어떤 경우 예제데이터를 통과 했지만 제출했을때 0점 처리가 되는 경우가 있습니다. 국내 정보올림피아드 대회에서는 부분점수를 도입하고 있는데 이 부분 점수는 실제로 데이터의 갯수를 줄여서 좀더 쉬운 알고리즘으로 풀었을때 부분점수를 주는 형태입니다. 따라서 작은 데이터라고 하더라도 어떤 경우의 테스트 데이터를 생각하지 못한 경우 쉬운 알고리즘으로도 부분점수를 획득하지 못하는 것입니다.

- 따라서 어떤 문제에 대해서 테스트케이스를 만들어 내는 훈련이 중요한 부분입니다.


4. 연습하고 또 연습하자.

- 경진에 능숙한 프로그래머는 마치 진짜 운동선수인 것 처럼 정기적으로 훈련해야 합니다.

- 매일매일 쉬운문제라도 한두문제씩이라도 풀어 보는 것을 권장하고 있습니다.

- 저도 학생들과 같은 입장이라서 매일 조금씩이라도 문제를 풀어 보려고 노력하는데요... 어떤 일 때문에 바빠서 한참을 문제풀이 하지 않고 다시 문제 풀이 해 보려고 하면 정말 앞이 깜깜해 지는 것을 느끼고는 합니다.

- 또한 원에서도 여행이나 또 다른 이유로 몇주를 쉬고 나왔을때... 정말 많은 것을 잊어 버리고 그 전의 상태로 돌아 가는데 한참의 시간이 지나서야 회복되는 것을 보아 왔습니다.

- 정보 역시 특기입니다. 운동선수와 같이 매일 매일 정기적으로 연습하시길 바랍니다.


이상은 알고리즘 트레이닝 책에서 조언하는 내용을 발췌하여 저의 생각을 같이 덧붙여 놓았음을 말씀드립니다.

또한 저희 학생들에게 꼭 전해 주고 싶은 말이기도 해서 포스팅 해 보게 되었습니다.

 



사업자 정보 표시
원당컴퓨터학원 | 기희경 | 인천 서구 당하동 1028-2 장원프라자 502호 | 사업자 등록번호 : 301-96-83080 | TEL : 032-565-5497 | Mail : icon001@naver.com | 통신판매신고번호 : 호 | 사이버몰의 이용약관 바로가기