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

 


'''넥슨 청소년 프로그래밍 챌린지'''
NEXON Youth Programming Challenge (NYPC)

[image]
<colbgcolor=#00355f> '''주최'''
넥슨, 넥슨재단
'''주관'''
넥슨

1. 개요
2. 대회 진행 방식
2.1. 예선 대회
2.2. 본선 대회
2.3. 문제의 분류
2.4. 평가 기준
3. 난이도
4. 토크콘서트


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개를 회복시켜준다. 이러한 하트 시스템은 2020년에 사라지고 무한으로 제출할 수 있게 되었다.
예선 대회에서의 부정 행위는 다른 사람과 문제에 대해 토론하거나 도움을 받는 행위, 웹 사이트를 공격하는 행위를 부정 행위로 보고 있다.
하지만 자신이 직접 '''과거'''에 작성한 코드와 '''대회 이전'''에 작성되었고 아무나 접근할 수 있는 곳에 공개되어 자유롭게 사용될 수 있도록 허가된 코드를 사용하는 것은 부정 행위가 아니다.

2.2. 본선 대회



2.3. 문제의 분류


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

2.4. 평가 기준



3. 난이도


난이도는 문제마다 차이가 꽤나 심한 편이다. 쉬운 문제는 단순히 프로그래밍 지식만 있어도 풀 수 있지만, 어려운 문제의 경우 동적 계획법이나 다익스트라 알고리즘 같은 알고리즘은 기본으로 나오며, DP의 분할 정복 최적화, SCC, Convexhull 같이 상당히 어려운 내용들도 나온다. 단순히 이런 알고리즘을 구현하는 것이 아니라 활용을 해야 하기에 체감 난이도는 더욱 어려운 편. 알고리즘을 제대로 활용하지 않아도 구현은 할 수 있겠지만, 이런 경우 시간 초과로 인해 점수를 받지 못할 가능성이 크다.[6]
난이도가 얼마나 어려운지 체감해보고 싶다면, 알고리즘 트레이닝 사이트에 들어가서 어려운 문제들을 골라서 풀어보면 된다. NYPC 대회에서 나오는 문제 자체는 다르지만, 대략적인 알고리즘이나 원리 등은 비슷하기 때문에 풀어보면 많은 도움이 될 것이다. 다양한 알고리즘 트레이닝 사이트들이 있으니 참고하도록 하자.
NYPC 홈페이지에서 실제 대회에서 냈던 문제를 공개하고 있으니 여기로 들어가서 확인해보는 것도 좋을 것이다. 일부 문제에는 풀이까지 같이 제공하고 있다.[7]

4. 토크콘서트


'''NYPC 토크콘서트'''
'''날짜'''
'''주제'''
'''앰버서더'''
2017년 8월 8일
코딩하는 대로
송호준, 이건호, 이은석, 하새승
2018년 8월 14일
세상을 바꾸는 프로그래머들의 이야기
강대현, 김태훈, 이두희, 콩돌이 프로덕션
2019년 7월 30일
프로그래머, 다양한 분야에서 세상을 바꾸다
김동건, 김형진, 남세동, 오상훈
2020년 8월 15일
2020년 8월 16일
1일차: 코딩, 바뀌는 미래를 이야기하다
2일차: 코딩, 하고 싶은 대로 하다
1일차: 김성민, 김성수, 반병현, 서지혜
2일차: 김대훤, 박지환/최주원, 안서형, 이두희, 허준녕
[1] 제 1회 대회 때에는 대학교 입시로 인해 고등학교 3학년은 참가가 어렵다고 판단하여 제외, 18세까지 참가가 가능하였다. 현재는 19세도 참가가 가능하다.[2] 2018년 제3회 대회 이후로 자바스크립트가 사라졌다.[3] 문제를 풀고 있는 '''자신'''[4] 마비노기의 인벤토리는 다른 게임들과는 달리 아이템마다 특정 크기를 가지며 각각 크기에 맞춰 인벤토리의 원하는 위치에 겹치지 않게 배치할 수 있다.[5] 꼭 프로그래밍으로 풀지 않아도 된다.[6] 실제로 프로그래밍 문제를 풀어본 사람들이라면 알겠지만, 구현은 할 수 있으나 알고리즘의 문제로 시간 초과가 나오는 경우가 꽤나 많다.[7] 프로그래밍 코드가 있지는 않고, 어떤 알고리즘을 사용해서 어떻게 풀어야 하는지 정도의 풀이가 나와 있다.

분류