강의실/정보영재

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

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

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

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

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


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


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. 연습하고 또 연습하자.

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

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

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

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

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


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

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

 



이 장소를 Daum지도에서 확인해보세요.
인천 서구 당하동 1028-2 장원프라자 502호 | 원당컴퓨터학원
도움말 Daum 지도
8 0
  • 휴식같은 친구 2018.12.13 17:17 신고    

    소프트웨어 경진대회를 준비하는 친구들에게 좋은 정보군요.,
    잘 보고 갑니다.

  • 행복사냥이 2018.12.13 21:28 신고    

    언제나 좋은 정보로 원생들에게 도움이 되겠어요. 잘 보고 갑니다.^^

  • 버블프라이스 2018.12.14 04:32 신고    

    프로그래밍 대회에 능숙해지는법- 전문가분이 해주시는 피가 되고 살이되는 말씀 학생분들에게 전해지길 바랍니다^^

  • Deborah 2018.12.14 05:38 신고    

    아주 좋은팁을 올려 주셨네요. ^^ 오늘도 좋은하루 되세요.

  • 핑구야 날자 2018.12.14 06:51 신고    

    프로그래밍 자주 해 보는게 제일 좋은 방법인 거 같아요

  • 청결원 2018.12.14 07:39 신고    

    날씨가 또 많이 추워 졌네요...
    건강 유의 하시고 포스팅 잘 보고 갑니다

  • 공수래공수거 2018.12.14 07:42 신고    

    대회에 능숙해지기 위한 팁이로군요.
    참가하려는 학생들에게 큰 도움이 되겠습니다.

  • 평강줌마 2018.12.15 09:28 신고    

    출제 유형들이 있군요. 아직 아이에게 컴퓨터는 시키지 않는데 나중에 준비를 시켜보고 싶네요.