정보 올림피아드와 같은 알고리즘 경시 대회에서 다음과 같은 사항을 유의하면 좋을것 같아 팁을 올려 봅니다.
1. 문제를 주의 깊게 읽어 보자
- 일반적으로 경시대회 문제를 살펴 보면 역사적인 내용이나 다른 배경 지식과 같은 내용을 많이 늘어 놓기 때문에 문제에서 프로그램으로 추론 하기 위해서는 문제를 정확히 이해해야만 합니다.
2. 함부로 문제의 요지를 단정짓지 말자
- 문제를 주의 깊게 읽어 보는 내용과 일맥 상통한 문맥이기는 하지만 문제에서 주어진 내용을 정확히 이해하는 것은 경시대회에서 매우 중요한 일입니다. 문제에서 테스트 데이터 몇가지 만으로 이 문제에서 요구하는 사항을 모두 이해 했다고 단정 짓는 것은 무척이나 위험한 일입니다.
테스트 데이터는 전체 문장의 극히 일부분의 경우만을 제시하는 것이 대부분이기 때문에 전체 문장을 정확히 이해하고 특히나 입력데이터의 순서나 규격 그리고 입력 숫자의 범위 등을 정확히 확인해야 합니다.
입력 숫자의 범위가 명시되지 않은 경우 음수가 들어 갈 수 있는 상황과 같이 다양한 데이터 종류에 대해 주의해야 합니다.
3. 너무 빠른 알고리즘으로 구현하기 이전에 안정적인 알고리즘으로 구현하라
- 데이터 양에 따라 적절한 알고리즘을 선택해서 구현 해 주는 것이 문제를 빠르게 풀어 나가는 해법이 되기도 합니다.
데이터 크기가 많지 않은 경우 속도는 느리지만 쉽고 안정적인 알고리즘으로 구현을 한다고 하면 알고리즘 기법이 단순해서 오류를 줄일 수 있습니다.
예를 들어 입력 데이터가 최대 10000 개 정도 입력이 된다면 이중 반복문을 이용하여 구현하는 알고리즘을 사용해도 1초당 1억번 가량 처리 하기 때문에 크게 문제될 소지가 없습니다.
하지만 10000 개 이상의 최대 데이터가 들어 온다면 그에 따른 적합한 알고리즘을 찾아서 구현하는 것도 방법일 것입니다.
=====================================================
처음 알고리즘을 접하는 학생들이라면 단순한 알고리즘 부터 자신이 문제를 읽고 거기에서 정확한 해답을 구하는 프로그램을 구현하는 능력을 키워야 합니다.(문제를 이해하는 능력이 우선입니다.)
온라인 저지에 자신의 프로그램을 채점을 받았을때 Accept(부분점수)를 받은 경우 타임아웃이 아닌 경우가 있다면 문제를 정확이 이해하지 못한 것입니다. 이때는 문제를 다시 한번 읽어서 어떤 경우를 놓쳤는지 문제를 다시 읽어 보아야 합니다.
타임아웃이 발생 했다면 문제를 정확히 이해는 했지만 데이터 양이 많아서 현재의 알고리즘으로는 구현이 안되는 것입니다.
이런때는 다른 알고리즘 기법이나 혹은 가지치기와 같이 여러가지 경우의 수를 제거해 나가는 방법이 효율적입니다.
다양한 알고리즘 기법들을 익혀 나가는 것은 많은 시간과 연습이 필요한 일입니다.
연습량 없이 많은 알고리즘 기법들을 배운 친구에게 단점이 아까 3번에서 말했던 것 처럼 단순한 알고리즘 기법으로 해결이 되는 문제를 속도가 빠른 알고리즘으로 구현하기 위해 많은 시간을 허비해서 만들었지만 속도가 빠른 만큼 구현도 까다로워 지는 것 만큼 실수가 반복되면서 완성을 못하는 경우를 종종 보기도 합니다.
돌다리도 두드리며 가라는 옛말 처럼 너무 빠르지 않더라도 정확히 이해하고 그것을 확장하여 나가는 것이 더 중요하다고 생각 되네요.
올해도 정보올림피아드 대회를 준비하는 모든 학생들을 응원합니다.^^
인천 서구 원당컴퓨터학원
'강의자료 > 정보영재' 카테고리의 다른 글
정보 영재가 되기 위해서 필요 한 것(?) (11) | 2022.01.10 |
---|---|
비버챌린지 비버스쿨 안내 드립니다. (8) | 2020.06.02 |
알고리즘 대회 - 규칙찾기(무시하는 힘) (307) | 2020.02.14 |
AI 발전의 역사 (154) | 2020.02.03 |
순열과 조합의 개념 (2544) | 2020.01.24 |