ENAN

Developer, Artist, Traveler

공부/기록

2021 카카오 신입 공채 2차 코딩테스트 후기

ENAN 2020. 10. 4. 17:05


2021 카카오 신입 개발자 공채 2차 코딩테스트에 참여해본 후기를 적으려 한다!

카카오 1차 코테 후기는 아래 링크
2020/09/18 - [공부/기록] - 2021 카카오 신입 공채 1차 코딩테스트 후기

2021 카카오 신입 공채 1차 코딩테스트 후기

2021 카카오 신입 개발자 공채 1차 코딩테스트에 참여해본 후기를 적으려 한다! 개요 2020.09.12 (토) 오후 2시~7시 반까지 치뤄졌고 ( 원래 7시까지였으나 채점 서버 통신 문제로 30분 연장 ) 문제 수는

enant.tistory.com

개요

2020.09.26 (토) 오후 12시 30분 ~ 7시까지 치뤄졌고
간단한 cs 10문제 15분 + 2차 코딩테스트 4시간 45분동안 진행되었다. (나머지는 감독관 확인 + 쉬는시간)

작년까지는 오프라인으로 진행했던 것 같은데 올해는 코로나의 여파로 온라인에서 진행되었다.
부정행위를 방지하기 위해 컴퓨터 화면을 공유하고 동시에 핸드폰으로 내 모습도 옆에서 찍어서
그 영상들을 감독관님들이 실시간으로 확인하셨다. (내 거북목 상태도 덤으로 확인할 수 있었다)

cs 문제는 정처기를 공부했다면 가볍게 풀 수 있는 정도였던 것 같고,
정처기 공부를 안했더라도 관련 과목 수업을 열심히 들었다면 무난하게 풀 문제들이었다.
물론 나는 헷갈리는 문제가 몇개 있었지만 남들은 쉽게 풀었을 거라고 직감했다.

2차 코테는 1차와 다르게 solved / unsolved 로 나누는 게 아니라 점수를 최대한 많이 획득해서 순위로 자르는 형식이었다.
처음 접해보는 형식이라 신선하기도 했고, 남들의 점수와 페이스를 실시간으로 볼 수 있다는게 나름 재밌었다. (동시에 현타도 옴)
리더보드는 1~100등까지 점수가 공개된다. 갱신될 때마다 정신이 아득해지는 느낌이 들었다..

그리고 2차 코딩 테스트에서는 검색과 IDE 사용을 허락해 준다! 금지하는건 메일, 메신저 등 연락을 취하는 행위 혹은 문제나 코드를 업로드하는 행위 뿐! 그치 구글링도 실력이지..

문제

문제를 공개하거나 자세히 설명하는건 문제가 될 수 있기 때문에 대략적으로만 설명하자면,
카카오 바이크 정류소에서 사람들이 자전거를 빌려가는데, 자전거가 부족해서 못 빌리는 일을 방지하기 위해 트럭으로 자전거를 그때그때 분배해주는 시스템을 만들어야 한다. 가장 효율적인 자전거 분배 시스템을 만들어 최대한 많은 대여 요청이 성공할 수 있도록 만드는 것이 목적이다.

입출력은 JSON 형태로 서버에 요청을 보내고 응답을 받아야 한다. 얻을 수 있는 입력 정보는
1) 시간 단위마다 각 정류소의 남은 자전거 갯수
2) 각 트럭의 정보 - 현재 어느 정류소에 있는지, 자전거를 몇개나 싣고 있는지 등등
대충 이정도 였던 것 같다. (사실 잘 기억이 안난다..)
이 정보를 가지고 각 트럭을 어떻게 조작할 것인지 (트럭 하나당 상하좌우 이동, 자전거 상/하차 6개 동작을 최대 10개까지) 를 요청으로 보내면 한 단위시간이 완료된다. 720개 정도의 요청을 완료하고 나면 최종 점수를 알 수 있다.

점수는 정확도 점수 (95%) + 효율성 점수 (5%) 로 계산되는데,
1) (내 시스템대로 트럭이 움직였을 때 취소된 요청 수 - 아무것도 안했을 때 취소되는 요청 수) 가 정확도 점수
2) (트럭이 최대한 움직이는 거리 - 내 시스템에서 트럭이 움직인 거리) 가 효율성 점수
대충 이런 식이었던 걸로 기억한다.
그래서 아무것도 안하고 요청만 720번 보내면 정확도 0점 효율성 만점으로 100점 중 5점을 받는다!

시나리오는 2개가 주어지고, 각 시나리오 별 점수를 합산해 최종 점수로 순위를 매긴다. 시나리오 1은 5x5 맵에서 트럭 4대로 움직이고, 시나리오 2는 60x60 맵에서 트럭 10대를 움직인다. 추가로 시나리오 2에는 핫스팟(요청이 집중되는 곳)이 있어서 이를 파악하는 것이 중요했다.

후기 및 결과

- 2차 코딩테스트는 경험이 없다면 마주했을 때 확실히 당황할 것 같다. 그래서 나도 당연히 당황했고..
처음 마주하면 일단 문제가 뭘 요구하는 건지 이해하는 데 한참 시간이 걸리고, 어느정도 이해가 되면 이걸 어떻게 해? 라고 부정하다가
결국 받아들이고 풀기 시작하는데 이게 한 3~40분이 걸렸다.
아마 다음에 또 풀게 된다면 이런 형태의 문제를 풀어본 사람과 처음 접하는 사람의 차이가 꽤 클 것 같다는 생각이 들었다.

- 리더보드를 보고있으면 대체로 사람들이 두 부류로 나뉜다. 1번 시나리오에 집중하는 사람들과 1, 2번을 적당히 풀어 합산 점수 고점을 노리는 사람들 (1,2번 다 고점을 받은 괴물들은 사람으로 안 치겠음)
마지막 쯤에 리더보드를 봤을 땐 뒷자리까진 기억안나지만 80점대가 100등이었던 걸로 기억한다.

즉 1번에서 상당히 높은 점수를 기록하고 2번 기본점수 5점을 받으면 충분히 리더보드 안에 들 수 있었던 것!
나는 1,2번을 적당히 푸는 쪽으로 시도했지만 시간에 쫓겨 결국 포기하고 1번에 집중하는 쪽으로 노선을 바꿨다. 처음에 40점대를 받고 가망이 없다고 느끼다가 문제점을 개선하고 최적화를 하며 60점, 70점대 까지 점차 올라갔다.
그래서 최종 점수는 1번에서 73점, 2번 기본점수 5점으로 78점 정도를 기록했다. 78점을 처음 기록했을 때는 리더보드 안에 들어갔지만, 어느 순간 광탈해버렸고 기대를 접었다. 썩 나쁜 점수는 아니라고 생각하지만, 통과를 기대할 만한 점수일지는 모르겠다.. 경험에 의의를 두는걸로!

- 여담으로 최적화 과정에서 부족한 정류장이 여러 개일때 어떻게 판단할까 고민하다가 그냥 가능한 만큼 랜덤으로 뽑았는데 생각보다 점수가 꽤 올라갔다. (처음에는 걍 번호순으로 잘라서 무조건 앞쪽 번호 정류장 자전거만 채워지는 문제가 있었음)
그래서 마지막엔 그냥 랜덤 돌리면서 기도메타로 갔다 (...)

- 그리고 대망의 결과는...




결과가 궁금해서 아무데나 뒤져보다가 카카오 인재영입 챗봇에서 10월 둘째주 말 ~ 10월 셋째주 초 사이에 공개된다는 정보를 발견했다! 결과가 공개되면 갱신 하겠음!
(수정) 아 10월 셋째주 중으로 바뀌었음!!



기도메타



면접 한번만 가보게 해주세요..


---


10월 14일 오후 5시경 메일이 한통 왔다. 떨리는 마음으로 열어보니..

합격!! 

감사합니다.. 후회없이 면접 볼 수 있길 !