본문 바로가기
IT 이야기

코딩 고수가 되려면

by 준샤인 2022. 7. 20.
반응형

프로그래밍 대회 참가해보기!

 

   컴퓨터 과학에서 배운 지식을 자신의 것으로 만들어 활용할 수 있고, 문제의 답을 스스로 고안할 수 있는 문제해결 능력이 매우 중요한데, 이는 학문을 배우는 입장에서 체득한 발견과 깨달음을 스스로 되짚어갈 수 있는 능력이라고도 할 수 있습니다. 바로 이러한 경험과 깨달음을 얻기 위한 가장 좋은 방법은 여러 프로그래밍 대회에 참가해 보는 것이라고 생각합니다!

 

컴퓨터 공학 전반에 걸쳐 널리 쓰이는 각종 알고리즘과 자료 구조들을 이용해 주어진 문제들을 해결하고 구현하는 능력을 겨루는 대회가 바로 프로그래밍 대회입니다.

프로그래머의 길을 가고자 하는 학생들이라면 꼭 도전해보라고 추천드리고 싶네요!

 

 

프로그래밍 대회란?

: 짧은 요구사항을 제시하고, 이에 맞는 프로그램을 시간 안에 빠르게 작성하는 능력을 겨루는 대회로 이 때의 요구사항이란 현업에서 접하는 형태의 요구사항이 아니라, 대개 어떤 값을 읽어들여 어떤 값을 계산하는 프로그램을 작성하시오.’라는 형태를 갖습니다.

 

▶ 프로그래밍 대회에서 배울 수 있는 점

  프로그래밍 대회 특성 및 장점
1 - 프로그래밍 대회에서 작성하는 프로그램들은 단순히 텍스트 파일을 읽어들이고 텍스트 파일을 출력하는 방식이라 참가자는 다른 데 정신을 빠앗기지 않고, 오로지 문제에만 집중할 수 있음
2 - 명시적인 시간과 메모리의 제한이 있어 제출한 프로그램이 시간과 메모리의 제한을 초과하면, 답의 정확성과 상관없이 틀린 답으로 처리함 (프로그래밍 계산 집중적이어서 적절한 알고리즘과 자료 구조를 사용하지 않으면 시간 제한 내에 동작하지 않음)
- 다양한 알고리즘 설계기법과 자료구조를 직접 사용해 볼 수 있는 계기가 됨
- 알고리즘에 사용된 원칙들을 이해하고 변형해야 풀 수 있는 문제들이 많이 출제되므로 이런 주제들을 이해하는 데 큰 도움이 됨
3 - 정답과 오답의 여부가 명확히 가려짐 (현업에서는 코드의 정당성을 단위 테스트나 상호 간 코드 리뷰로 검증하는 데 반해 대회에서는 크고 다양한 입력에 대해 정답을 계산하는지 확인하므로 오류를 모르고 넘어갈 가능성이 적음)
- 작성한 코드에 대해 빠르고 객관적인 피드백을 받음 (대회에서는 프로그램의 정답 여부를 제출 즉시 또는 대회가 끝난 뒤 바로 알려줌) 
- 신속한 피드백을 통해 예외없고 정확한 프로그램을 작성하는 좋은 훈련이 됨
4 - 제출 프로그램의 실행 시간이나 메모리 사용량 관련 정보가 실시간으로 제공되기에 프로그램 수정시, 작은 변경이 프로그램 효율성에 미치는 영향을 작접 체험해 볼 수 있음
- 논리적 구조가 복잡한 프로그램의 수행 성능을 예측하는 데 익숙해지기 때문에 실무에서 퍼포먼스가 중요한 프로그램을 작성하는 데 큰 도움이 됨
5 - 대회에 제출하는 프로그램들은 규모가 작아 각 문제를 풀 때마다 처음부터 다시 짜게 되는 데, 이런 특성은 보통 대형 프로젝트에서 간과했던 프로그램의 작은 부분에 집중할 수 있는 계기를 만들어 줌
- 대회를 위한 작은 코드를 작성할 때는 간결하고 우아한 프로그램을 짜는 데 시간을 투자할 수 있으므로 좋은 코드를 작성하는 좋은 연습이 됨
6 - 대회에서는 여러 사람이 경쟁하는 환경에서 코드를 작성하게 되므로 경쟁으로 인해 실력을 늘리게 되는 좋은 동기가 되기도 함
- 대회에서는 제출된 소스를 모두 공개하는 데, 참가자 모두 같은 문제를 풀기 때문에 전세계의 고수 프로그래머들이 짠 코드를 직접 보고 자신이 짠 코드와 비교해 볼 수 있는 기회가 됨

 

▶ 국내 프로그래밍 대회

프로그래밍 대회 특징 및 개요
한국 정보 올림피아드 - 대상 : 초.중.고등학생
- 주최 : 행정안전부
- 부문 : 알고리즘을 푸는 경시와 공모 부문으로 나눔
- 특징 : 정식 컴퓨터 과학 교육을 받은 적이 없는 학생들이 참가하는 대회로 초, 중, 고등부 별로 각각 다른 문제가 출제됨 / 규모가 크고 참가자들과 문제의 수준이 매우 높은 편임
ACM-ICPC
(ACM 대학생 프로그래밍 경시대회)
- 대상 : 대학생 
- 주최 : 컴퓨터 학회(Associationn for Computing Machinery), 행정안전부의 지원으로 한국 대학생 프로그래밍 경시대회도 겸함
- 부문 : 경시 부문 (진행시간 5시간 / 문제 수 8~10 문제)
- 특징 : 3명의 학생 팀을 이뤄 한 대의 컴퓨터로 문제를 푸는 방식 / 팀워크나 시간 배분 같은 요소가 문제 해결 능력만큼이나 중요함 / 상위 입상 팀은 다른 나라에서 열리는 세계 결선에 참여할 자격을 얻게 됨
탑코더(TopCoder) - 대상 : 제한 없음 (학생에서 실무 경력자들까지)
- 주최 : '탑코더'라는 소프트웨어 개발 과정을 크라우드 소싱하는 미국 회사
- 부문 : 아키텍처 설계, 컴포넌트 디자인, 컴포넌트 개발, 인터페이스 설계까지 망라해 여러 개의 트랙으로 나누어져 있음 / 이 중 알고리즘 트랙에 가장 많은 사람들이 참가하며, 1시간 15분 동안 3개의 문제가 주어짐 
- 특징 : 한 달에 약 세 번씩의 작은 대회를 개최하며, 1년에 한 번 탑코드 오픈(TopCoder Open)이라 불리는 토너먼트를 개최함 / 여러 번의 온라인 예선을 거쳐 미국에서 오프라인 결선을 치름 / 이 대회들의 성적으로 참가자들의 실력을 점수로 평가해 랭킹을 매기는 것으로 유명함
구글 코드 잼
(Google Code Jam)
- 대상 : 제한 없음 (전세계적으로 참가자가 가장 많은 프로그래밍 대회)
- 주최 : 구글
- 부문 : 경시
- 특징 : C++, Java 정도로 사용 가능한 언어가 제한되는 것이 아닌, 자신이 원하는 언어를 자유롭게 사용할 수 있다는 장점이 있음 / 여러 번의 인터넷 예산을 거쳐 오프라인 결선을 치름 / 2008년 이후로는 구글에서 직접 작성한 프로그래밍 대회 플랫폼을 이용해 대회를 진행함
기타 온라인 대회 및
모의고사들
● 탑코드(http://www.topcoder.com/tc)
: 1~2주 간격으로 온라인 대회 개최하고, 대회시간도 길지 않기 때문에 잠깐씩 짬을 내어 대회에 참가해야 하는 직장인들에게도 적절함

● 코드포스(http://codeforces.com)
: 러시아에서 만든 프로그래밍 대회 커뮤니티 사이트로 최근 가장 활발하게 운영되고 있는 사이트 중 하나로 대회를 자주 개최하며, 탑코더처럼 참가자들의 성적을 점수화하여 공개함

●바야돌리드 대학교 온라인 채점 사이트(http://uva.onlinejudge.org)
: 인터넷에서 가장 오래된 프로그래밍 대회 채점 사이트 중 하나로 사이트 기능이 비교적 낙후되어 불편하지만, ACM-ICPC 세계 결선의 채점관들이 직접 문제를 내는 모의고사들이 이 사이트에서 자주 열림

 

※ 기타 비정기적으로 개최되는 각종 프로그래밍 대회에 대한 정보 --> http://algospot.com을 참고하세요!

 

[참고 및 추천도서] 프로그래밍 대회에서 배우는 알고리즘 문제 해결 전략 - 구종만 저 -

728x90

'IT 이야기' 카테고리의 다른 글

알고리즘 표현 방법  (0) 2022.07.22
자료구조란?  (0) 2022.07.21
알고리즘과 순서도  (0) 2022.07.19
좋은 프로그래머와 알고리즘  (0) 2022.07.18
소프트웨어 3R과 CASE  (0) 2022.07.16

댓글