최근 수정 시각 : 2024-08-25 15:42:16

넥슨 청소년 프로그래밍 챌린지

<colbgcolor=#000><colcolor=#fff> 넥슨 청소년 프로그래밍 챌린지
Nexon Youth Programming Challenge (NYPC)
파일:NYPC로고.gif
주최 넥슨, 넥슨재단
주관 넥슨
파일:홈페이지 아이콘.svg  |  파일:유튜브 아이콘.svg  |  파일:페이스북 아이콘.svg  |  파일:X Corp 아이콘(블랙).svg  |  파일:카카오톡 아이콘.svg
1. 개요2. 대회 진행 방식
2.1. 예선 대회2.2. 본선 대회2.3. 문제의 분류2.4. 평가 기준
3. 난이도4. 토크콘서트

[clearfix]

1. 개요

NYPC(NEXON Youth Programming Challenge)는 프로그래밍에 관심 있는 청소년들이
참신하고 재미있는 프로그래밍 문제를 통해 세상을 바꾸는 코딩과 만나는 새로운 도전의 장입니다.

시대를 앞서 살아간 누군가의 상상력이 코딩을 만나 현실이 되었고,
세상을 바꾸어 놓았습니다. 당신이 꿈꾸는 미래는 어떤 모습인가요?
NYPC는 여러분이 꿈에 한 발 더 다가설 수 있는 재미있는 도전을 함께 해 보려고 합니다.
몇 등을 하는지가 중요한 것은 아닙니다. NYPC에 참여하는 것, 그 자체만으로도 당신이 세상을
바꾸는 코딩이라는 새로운 문을 여는 것입니다. 제2의 마크 저커버그, 제2의 빌 게이츠,
제2의 스티브 잡스가 아닌 그들을 뛰어넘어 세상을 더 멋진 곳으로 바꿀 단 한 사람.

NYPC에서 제1의 당신을 만나고 싶습니다.

넥슨과 넥슨재단이 공동으로 주최하는 청소년 프로그래밍 대회. 2016년에 첫 대회를 시작으로 지금까지 계속 운영되고 있다. 12 ~ 19세 청소년이라면 특별한 조건 없이 누구든지 참가가 가능하다.[1]

2. 대회 진행 방식

백준이나 CodeUp 같은 알고리즘 트레이닝 사이트를 떠올리면 된다. 문제가 주어지면 이를 해결하는 프로그래밍 코드를 작성해서 서버 측에 제출하고, 서버에서 채점하는 방식으로 대회가 진행된다. 가장 자신있는 언어 하나를 선택해서 풀어도 되고, 다양한 언어를 사용해서 풀어도 상관은 없다.

대회는 크게 온라인에서 진행되는 예선 대회와 오프라인에서 진행되는 본선 대회로 나뉜다. 온라인이든 오프라인이든 대회를 진행하는 장소와 사용하는 컴퓨터가 다를 뿐이지, 프로그래밍 코드를 서버에 제출하고 서버에서 채점하는 방식으로 진행되는 것은 동일하다.
사용 가능한 언어
C
C 11
C++
C++ 11
C++ 14
C++ 17
C#
Java
Python2
Python3
PyPy 2
자바스크립트[2]

넥슨에서 주최한 대회라 그런지 문제가 넥슨 게임과 관련돼있다.
넥슨 게임과 관련되어 있는 문제
2019년 예선 문제
요리 제작 트라하 트라하를 즐기는 아란이 요리 제작 전문 기설에 빠져있고 그 중에서도 스테이크를 좋아해
스테이크를 주어진 재료만큼 최대한 많이 만드는 문제
최대 HP 마비노기 영웅전 내가[3] 마비노기 영웅전의 전투 로그 분석을 맡게 되어초,중,고딩한테 로그 분석을 맡기다니... 마법 전문가인 이비의 전투를 분석해 이비의 최대 체력이 얼마 인지 구하는 문제
마비노기 색상표 마비노기 원추세포 중 일부가 색을 잘 구분하지 못하는 사람들을 위해 마비노기팀이 이러한 사람을 돕기 위해 이런 경우에 속하는 사람들을 위한 문제를 만들기 위해 새로운 색상표를 만드는 문제
카트라이더 경험치 카트라이더 호준이는 자신 포함 N명의 친구와 카드라이더 경주를 하는데 호준이는 월등한 실력으로 1등을 하였지만 친구들을 배려해 결승점에 들어올 순서를 미리 정해 모두가 얻는 경험치 합을 최대값을 구하는 문제
마비노기 인벤토리 마비노기 마비노기의 인벤토리[4]에 은행에서 미리 모아논 양털과 나무장작을 상점에 가서 팔려 하는데 은행과 상점을 왕복하는건 번거로운 일이니 한번에 갔을때 최대한 많은 돈을 벌 수 있게 인벤토리의 아이템을 배치하면 되는 문제
VIP 쿠폰 카트라이더 희지가 생일 선물로 받은 카트라이더 VIP 쿠폰 N개를 사용해 VIP가 될 수 있는데 VIP 쿠폰을 잘 사용해 VIP 기간을 연속하여 최대한 오래동안 유지할 수 있는 일수를 출력하는 문제
메이플스토리 연주회 메이플스토리 메이플스토리의 여러 종류의 몬스터들이 이번 여름을 맞이해 연주회를 하기로 했는데 에반이 선별한 몬스터들이 이 곡을 연주할 수 있는 모든 경우의 수를 구하는 문제
메이플스토리 파티 구성 메이플스토리 창수가 길드를 운영하며 어떤 캐릭터 직업 구성이 검은 마법사를 격파하기 좋은지 파티를 구성하는데 두 개의 파티가 있을 때 캐릭터의 직업 구성이 같은지 확인하는 문제

2.1. 예선 대회

온라인에서 1 ~ 2주 정도 정해진 기간 동안 진행된다. 이 기간 동안 문제를 풀고 싶을 때, NYPC 홈페이지로 들어가서 문제를 풀면 된다. 대회 시작 전에 연습 문제가 주어지며 대략 어떤 방식으로 대회가 진행되는지 알려주기 위함으로 이 문제는 실제 성적에 반영이 되지 않는다.

문제 방식은 문제를 해결할 수 있는 코드를 프로그래밍해서 서버로 제출하면 되는 방식이 있고 입력 TXT 파일을 다운로드 받아서 실행 결과만 제출하면 되는 방식이 있다.[5]

소스코드를 제출하는 데는 하트(♥)가 필요한데 3분마다 하나씩 자동으로 충전되고 최대 5개까지 유지된다. 하트가 없으면 소스코드를 제출 할 수 없고, 문제 정답을 맞춘 경우 하트 1개를 회복시켜준다. NYPC for kakao? 이러한 하트 시스템은 2020년에 사라지고 무한으로 제출할 수 있게 되었다.

2022년에는 기존 예선방법에서 ROUND1과 ROUND2로 총 두번 진행하는 방식으로 바뀌었다. ROUND 1과 2는 기존과 마찬가지로 온라인으로 진행되며 ROUND1은 기존처럼 정해진 기간동안 문제를 풀고 일정 점수이상이면 ROUND2에 갈 수 있고, ROUND2는 A와 B중 한 날짜를 선택[6]해 주어진 시간안에 가장 높은 점수를 얻은 몇 명만 본선에 진출할수있다.

예선 대회에서의 부정 행위는 다른 사람과 문제에 대해 토론하거나 도움을 받는 행위, 웹 사이트를 공격하는 행위를 부정 행위로 보고 있다.
하지만 자신이 직접 과거에 작성한 코드와 대회 이전에 작성되었고 아무나 접근할 수 있는 곳에 공개되어 자유롭게 사용될 수 있도록 허가된 코드를 사용하는 것은 부정 행위가 아니다. wow

예선 대회에서 상위 500등 안에 들면 특별상과 함께 NYPC 티셔츠를 받을 수 있다.

2.2. 본선 대회

예선에서 상위 성적을 거둔 사람들을 대상으로[7] 하며, 넥슨코리아 본사에서 진행된다. 본선 대회는 일반적으로 5개의 문제가 주어지며, 5시간동안 치러진다. 예선과 마찬가지로 각 문제에는 부분 점수가 있으며, 점수의 합이 완전히 같을 경우 해당 점수를 최초로 받은 시점을 기준으로 등수가 정해진다.

대회장 입장 시 교통비[8]를 주며, NYPC 로고가 그려진 후드를 받아 입고 대기하다 시험장으로 이동한다. 대회는 주어지는 노트북에 개인 지참 키보드 또는 기본 키보드를 연결하여 치르게 된다. 대회 중간에 점심이 상자에 담겨 제공되지만 상황 상 먹는 걸 잊기 쉬워서, 대회가 끝난 뒤에야 개봉하고 시상식을 기다리며 먹는 경우도 많다.
동반인은 대회 결과를 기다리는 동안 준비된 여러 이벤트에 참가할 수 있고[9], 참가자는 볼 수 없는 스코어보드를 관람할 수 있다. 스코어보드엔 이름 대신 번호가 적혀 있어 읽을 때 한 차례 생각을 요구한다. 대회 종료 30분 전에는 스코어보드가 프리즈되므로 외부인도 시상식 전까지는 최종 결과를 알 수 없다.

대회 종료 직후 본선 참가자 전원에게 키보드와 마우스[10], 넥슨 게임 굿즈를 비롯한 상품이 담긴 참가상이 주어진다. 이후 동반인과 함께 강당으로 이동하여 단체로 시상식을 진행한다. 다만 2020~2022년 간은 COVID-19로 인해 동반인 없이 시험 장소에서 즉시 시상식을 진행하였다.

부분 점수가 최종 등수에 매우 큰 영향을 미치므로, 참가자는 한 문제의 고득점 풀이를 오래 붙드는 것보단, 문제를 모두 읽은 뒤 빠르게 풀이를 구현해 받을 수 있는 부분점수를 전부 받아놓고 시작하는 등 전략을 고민할 필요가 있다. 한눈에 보면 만만해 보이는 문제가 실제로는 매우 어려운[11] 문제거나, 풀이는 무난하지만 실제론 구현 및 디버깅에 몇 시간을 요구하는 상황도 자주 등장하기 때문.
2021년에는 다른 점수가 모두 동일하고[12], 마지막 단 한 문제의 부분점수 및 해당 점수를 획득한 시점으로 1등부터 10등까지 순위가 갈렸으며, 2019년 및 2020년 역시 비슷한 경향을 보였다.

문제들은 대체로 잘 알려진 테크닉에 적절한 아이디어를 합쳐 해결할 수 있는 것들과, 고난도 애드혹과 휴리스틱 계열[13]로 각각 나뉘어 등장하는 기조가 있으나, 출제 스타일 및 문제 분야는 매 해 달라지므로 기출을 풀어보고 직접 판단하되 다양한 유형을 연습할 필요가 있다.

2.3. 문제의 분류

문제의 종류는 다음과 같은 3가지 종류로 분류된다.
  • 일반: 서버에서 주어지는 모든 테스트 케이스를 통과해야 정답으로 인정된다. 하나라도 정답이 아닌 경우가 있을 경우 (오답, 시간 초과, 런타임 오류 등) 오답으로 간주된다.
  • 부분 점수: 서버에서 주어지는 모든 테스트 케이스를 통과하지 못하더라도, 정답인 테스트 케이스가 있으면 부분적으로 점수가 주어진다.
  • 포인트 경쟁: 간단히 설명하자면 상대평가로 채점되는 방식이다. 처음에 만점을 받았더라도 문제를 푼 다른 참가자가 있으면 받은 점수가 바뀔 수 있다. 점수 산출 방법은 각 문제마다 특정한 공식을 사용해서 산출한다. 모든 포인트 경쟁 문제는 자동으로 부분 점수 문제 분류에 속해 있다.

2.4. 평가 기준

3. 난이도

난이도는 문제마다 차이가 꽤나 심한 편이다. 쉬운 문제는 단순히 프로그래밍 지식만 있어도 풀 수 있지만, 어려운 문제의 경우 동적 계획법이나 다익스트라 알고리즘 같은 알고리즘은 기본으로 나오며, DP의 분할 정복 최적화, SCC, Convexhull 같이 상당히 어려운 내용들도 나온다. 단순히 이런 알고리즘을 구현하는 것이 아니라 활용을 해야 하기에 체감 난이도는 더욱 어려운 편. 알고리즘을 제대로 활용하지 않아도 구현은 할 수 있겠지만, 이런 경우 시간 초과로 인해 점수를 받지 못할 가능성이 크다.[14]

난이도가 얼마나 어려운지 체감해보고 싶다면, 알고리즘 트레이닝 사이트에 들어가서 어려운 문제들을 골라서 풀어보면 된다. NYPC 대회에서 나오는 문제 자체는 다르지만, 대략적인 알고리즘이나 원리 등은 비슷하기 때문에 풀어보면 많은 도움이 될 것이다. 다양한 알고리즘 트레이닝 사이트들이 있으니 참고하도록 하자.

NYPC 홈페이지에서 실제 대회에서 냈던 문제를 공개하고 있으니 여기로 들어가서 확인해보는 것도 좋을 것이다. 일부 문제에는 풀이까지 같이 제공하고 있다.[15]

4. 토크콘서트

NYPC 2017 토크콘서트 #
NYPC 2018 토크콘서트 #
NYPC 2019 토크콘서트 #
NYPC 2020 토크콘서트 #
NYPC 2021 토크콘서트
[1] 제1회 대회 때에는 대학교 입시로 인해 고등학교 3학년은 참가가 어렵다고 판단하여 제외, 18세까지 참가가 가능하였다. 현재는 19세도 참가가 가능하다. [2] 2018년 제3회 대회 이후로 자바스크립트가 사라졌다. [3] 문제를 풀고 있는 자신 [4] 마비노기의 인벤토리는 다른 게임들과는 달리 아이템마다 특정 크기를 가지며 각각 크기에 맞춰 인벤토리의 원하는 위치에 겹치지 않게 배치할 수 있다. [5] 꼭 프로그래밍으로 풀지 않아도 된다. 하지만 7~8단계부터는 사람이 도전할 난이도가 아니다. [6] 두 날짜 모두 도전해도 된다. [7] 해마다 차이가 있으나, 대략적으로는 1519 부문의 경우 25~50명 정도가, 1214 부문의 경우 10~20명 정도가 본선에 진출한다. [8] 보통 5만원이지만, 지방에 거주 시 10만원을 주기도 한다. [9] COVID-19의 여파가 없을 때 기준 [10] 키보드는 CORSAIR K68, 한성컴퓨터 GK888B, 마우스는 마이크로소프트 디자이너 마우스, 로지텍 G PRO X SUPERLIGHT 등. 해마다 차이는 있지만 키보드 가격 + 마우스 가격은 어느정도 일정한 편. [11] solved.ac 기준 D2 ~ R3 [12] 100 + 100 + 15 + 41 = 256 [13] 만점 방지, 점수로 등수 가르기 용도로 출제되는 느낌이 있다. [14] 실제로 프로그래밍 문제를 풀어본 사람들이라면 알겠지만, 구현은 할 수 있으나 알고리즘의 문제로 시간 초과가 나오는 경우가 꽤나 많다. [15] 프로그래밍 코드가 있지는 않고, 어떤 알고리즘을 사용해서 어떻게 풀어야 하는지 정도의 풀이가 나와 있다.