알고리즘 문제풀이/대회 수상

중앙대학교 2021 SW‧AI전공 코딩경진대회 후기 - 최우수상 수상!

닷넷 지키미 백발백준 2021. 11. 1. 01:25

오늘은 10월 12일에 치뤄진 중앙대학교 2021 SW‧AI전공 코딩경진대회에 참가한 후기를 적어보려고 합니다.
작년에도 참여했었는데, 올해도 마지막으로 참여할 수 있는 기회를 잡고자 참가 신청을 하였습니다.


플랫폼은 프로그래머스를 사용하였고 작년과 마찬가지로 비대면 방식으로 모니터 캡처 && (웹캠 || 폰 카메라)로 화상 감독을 진행하였습니다.

올해도 역시 코딩부트캠프 과목의 1차 코딩테스트를 겸하여 진행되었다. 작년과 마찬가지로 1차 코딩테스트의 통과 기준은 200점이었다.

아래는 제가 생각하는 문제의 난이도와 풀이 방법입니다. 문제가 공개되지 않아 간단하게만 서술하도록 하겠습니다.
1번 문제 - 골드 4 (DP, 조합론)
대각선을 한번만 거쳐서 갈 수 있는 모든 경우의 수를 구하는 문제였습니다.
DP로 대각선을 거치지 않을 경우의 경우의 수를 정해두고, 각각의 대각선을 지날 때마다 경우의 수를 모두 더해주는 방식으로 풀이하였습니다.
경우의 수를 구할 때 조합과 나머지 연산을 처리해주는 것이 귀찮았고, N크기가 크진 않아서 Python을 썼습니다.
2번 문제 - 실버 3 (분할정복)
배열을 둘로 쪼개서 계속해서 reverse 해주면 되는 분할정복의 대표적인 문제였습니다.
처음에 1번을 잡았다가, 스코어 보드 확인 후 2번을 먼저 푸는 것이 더 낫겠다고 생각이 들어서 먼저 잡게 되었습니다.
3번 문제 - 골드 3 (구현)
주어진 배열에서 ㅁ자 모양이 딱 1개만 있는지를 따지는 문제였습니다.
1) 테두리가 직사각형인지, 테두리 바로 바깥쪽이 색칠이 안되있는지 확인
2) 내부에 빈 공간이 직사각형인지, 빈 공간이 1개인지 확인
처음에 빈 공간이 1개인지 확인을 안해줘서 만점을 못받았는데, 해당 로직을 추가하자 만점을 받았습니다.
4번 문제 - 플레 5 ~ 4 (SCC)
이전 상태와 같을 때까지 지정된 사람한테 선물을 계속 건넨 뒤, 각각 몇개의 선물을 가지게 되는가를 따지는 문제였습니다.
시뮬레이션 형태로 구현하니 부분점수로 71.4점을 얻을 수 있었습니다. 정해는 SCC였다고 합니다.

문제를 푼 순서는 2번 - 1번 - 4번 - 3번 순서로 풀었습니다.
작년과 다르게 상위권에서 잘 버티고 있었고, 프리징 이전에 371.4점을 얻어서 1등을 기록하고 있었기에 1등을 조금 기대하기는 했었습니다.
하지만 4번 만점을 받지 못하였기에 1명 정도는 제 위에 있을 수 있겠구나 싶었습니다.

결과적으로 아래와 같이 2등으로 최우수상을 수상하였습니다.
1명 정도 위에 있을 것이다라는 예상은 결국 틀리지 않았습니다.
작년 1등 수상자가 올해도 1등을 차지하며 2년 연속으로 1등을 차지하게 되었습니다.
작년보다 전체적으로 난이도가 쉬워졌던 탓에 수상자들 점수가 전반적으로 상승하였고, 특히 371.4점에 2등부터 7등까지 몰리게 되어 최우수상과 우수상은 최고 점수 도달 시간으로 결정되었습니다.

중앙대학교 2021 SW‧AI전공 코딩경진대회


아울러 코딩부트캠프 통과 기준선인 200점을 넘은 사람도 7명 → 44명으로 큰 폭으로 증가하였습니다.
대회의 관점에서는 수상자 10명 중 6명이 동점이라는 사상 초유의 사태가 일어났지만, 코딩테스트용 관점에서는 괜찮은 문제 Set이었다고 생각이 듭니다.
작년 대회의 2번 문제는 구현과 알고리즘이 섞여있어서 풀기가 굉장히 힘든 문제였지만, 이번 대회에서는 1번과 3번 문제로 알고리즘이 필요한 문제와 구현이 필요한 문제가 따로 있어서 개개인이 강점을 보이는 영역에서 적당히 부분 점수를 긁고, 4번에서도 간단한 시뮬레이션 풀이로 부분 점수를 챙겨서 200점을 넘기기에는 괜찮은 문제 Set이었습니다.

결과적으로 2년 연속으로 최우수상을 받게 되었습니다. 이번 학기 이후로 졸업 예정이라 1등을 차지하지 못한 아쉬움이 있긴 하지만, 그만큼 잘하는 후배들이 많다는 점이기도 하니 좋은 마음으로 학교를 떠날 수 있을 것 같습니다.
앞으로 더욱 뛰어난 후배들이 많아졌으면 좋겠다는 생각을 하면서 해당 글을 마치고자 합니다.
감사합니다.