넥슨 청소년 프로그래밍 챌린지
1. 개요
넥슨과 게임문화재단이 공동으로 주최하는 청소년 프로그래밍 대회. 2016년에 첫 대회를 시작으로 지금까지 계속 운영되고 있다. 12 ~ 19세 청소년이라면 특별한 조건 없이 누구든지 참가가 가능하다.[1]'''NYPC(NEXON Youth Programming Challenge)는 프로그래밍에 관심 있는 청소년들이'''
'''참신하고 재미있는 프로그래밍 문제를 통해 세상을 바꾸는 코딩과 만나는 새로운 도전의 장입니다.'''
시대를 앞서 살아간 누군가의 상상력이 코딩을 만나 현실이 되었고,
세상을 바꾸어 놓았습니다. 당신이 꿈꾸는 미래는 어떤 모습인가요?
NYPC는 여러분이 꿈에 한 발 더 다가설 수 있는 재미있는 도전을 함께 해 보려고 합니다.
몇 등을 하는지가 중요한 것은 아닙니다. NYPC에 참여하는 것, 그 자체만으로도 당신이 세상을
바꾸는 코딩이라는 새로운 문을 여는 것 입니다. 제 2의 마크 주커버그, 제 2의 빌게이츠,
제 2의 스티브 잡스가 아닌 그들을 뛰어넘어 세상을 더 멋진 곳으로 바꿀 단 한 사람.
'''NYPC에서 제 1의 당신을 만나고 싶습니다.'''
2. 대회 진행 방식
백준이나 CodeUp 같은 알고리즘 트레이닝 사이트를 떠올리면 된다. 문제가 주어지면 이를 해결하는 프로그래밍 코드를 작성해서 서버 측에 제출하고, 서버에서 채점하는 방식으로 대회가 진행된다. 가장 자신있는 언어 하나를 선택해서 풀어도 되고, 다양한 언어를 사용해서 풀어도 상관은 없다.
대회는 크게 온라인에서 진행되는 예선 대회와 오프라인에서 진행되는 본선 대회로 나뉜다. 온라인이든 오프라인이든 대회를 진행하는 장소와 사용하는 컴퓨터가 다를 뿐이지, 프로그래밍 코드를 서버에 제출하고 서버에서 채점하는 방식으로 진행되는 것은 동일하다.
넥슨에서 주최한 대회라 그런지 문제가 넥슨 게임과 관련되있다.
2.1. 예선 대회
온라인에서 1 ~ 2주 정도 정해진 기간 동안 진행된다. 이 기간 동안 문제를 풀고 싶을 때, NYPC 홈페이지로 들어가서 문제를 풀면 된다. 대회 시작 전에 연습 문제가 주어지며 대략 어떤 방식으로 대회가 진행되는지 알려주기 위함으로 이 문제는 실제 성적에 반영이 되지 않는다.
문제 방식은 문제를 해결할 수 있는 코드를 프로그래밍해서 서버로 제출하면 되는 방식이 있고 입력 TXT 파일을 다운로드 받아서 실행 결과만 제출하면 되는 방식이 있다.[5]
소스코드를 제출하는 데는 하트(♥)가 필요한데 3분마다 하나씩 자동으로 충전되고 최대 5개까지 유지된다. 하트를 없으면 소스코드를 제출 할 수 없고, 문제 정답을 맞춘 경우 하트 1개를 회복시켜준다. 이러한 하트 시스템은 2020년에 사라지고 무한으로 제출할 수 있게 되었다.
예선 대회에서의 부정 행위는 다른 사람과 문제에 대해 토론하거나 도움을 받는 행위, 웹 사이트를 공격하는 행위를 부정 행위로 보고 있다.
하지만 자신이 직접 '''과거'''에 작성한 코드와 '''대회 이전'''에 작성되었고 아무나 접근할 수 있는 곳에 공개되어 자유롭게 사용될 수 있도록 허가된 코드를 사용하는 것은 부정 행위가 아니다.
2.2. 본선 대회
2.3. 문제의 분류
문제의 종류는 다음과 같은 3가지 종류로 분류된다.
- 일반: 서버에서 주어지는 모든 테스트 케이스를 통과해야 정답으로 인정된다. 하나라도 정답이 아닌 경우가 있을 경우 (오답, 시간 초과, 런타임 오류 등) 오답으로 간주된다.
- 부분 점수: 서버에서 주어지는 모든 테스트 케이스를 통과하지 못하더라도, 정답인 테스트 케이스가 있으면 부분적으로 점수가 주어진다.
- 포인트 경쟁: 간단히 설명하자면 상대평가로 채점되는 방식이다. 처음에 만점을 받았더라도 문제를 푼 다른 참가자가 있으면 받은 점수가 바뀔 수 있다. 점수 산출 방법은 각 문제마다 특정한 공식을 사용해서 산출한다. 모든 포인트 경쟁 문제는 자동으로 부분 점수 문제 분류에 속해 있다.
2.4. 평가 기준
3. 난이도
난이도는 문제마다 차이가 꽤나 심한 편이다. 쉬운 문제는 단순히 프로그래밍 지식만 있어도 풀 수 있지만, 어려운 문제의 경우 동적 계획법이나 다익스트라 알고리즘 같은 알고리즘은 기본으로 나오며, DP의 분할 정복 최적화, SCC, Convexhull 같이 상당히 어려운 내용들도 나온다. 단순히 이런 알고리즘을 구현하는 것이 아니라 활용을 해야 하기에 체감 난이도는 더욱 어려운 편. 알고리즘을 제대로 활용하지 않아도 구현은 할 수 있겠지만, 이런 경우 시간 초과로 인해 점수를 받지 못할 가능성이 크다.[6]
난이도가 얼마나 어려운지 체감해보고 싶다면, 알고리즘 트레이닝 사이트에 들어가서 어려운 문제들을 골라서 풀어보면 된다. NYPC 대회에서 나오는 문제 자체는 다르지만, 대략적인 알고리즘이나 원리 등은 비슷하기 때문에 풀어보면 많은 도움이 될 것이다. 다양한 알고리즘 트레이닝 사이트들이 있으니 참고하도록 하자.
NYPC 홈페이지에서 실제 대회에서 냈던 문제를 공개하고 있으니 여기로 들어가서 확인해보는 것도 좋을 것이다. 일부 문제에는 풀이까지 같이 제공하고 있다.[7]
4. 토크콘서트
[1] 제 1회 대회 때에는 대학교 입시로 인해 고등학교 3학년은 참가가 어렵다고 판단하여 제외, 18세까지 참가가 가능하였다. 현재는 19세도 참가가 가능하다.[2] 2018년 제3회 대회 이후로 자바스크립트가 사라졌다.[3] 문제를 풀고 있는 '''자신'''[4] 마비노기의 인벤토리는 다른 게임들과는 달리 아이템마다 특정 크기를 가지며 각각 크기에 맞춰 인벤토리의 원하는 위치에 겹치지 않게 배치할 수 있다.[5] 꼭 프로그래밍으로 풀지 않아도 된다.[6] 실제로 프로그래밍 문제를 풀어본 사람들이라면 알겠지만, 구현은 할 수 있으나 알고리즘의 문제로 시간 초과가 나오는 경우가 꽤나 많다.[7] 프로그래밍 코드가 있지는 않고, 어떤 알고리즘을 사용해서 어떻게 풀어야 하는지 정도의 풀이가 나와 있다.