2021 카카오 채용연계형 인턴십 코딩테스트 후기(Programming 분야)
2021 카카오 채용연계형 인턴십 코딩테스트 후기(Programming 분야)
전형 방법 및 일정
- 지원기간 : 2021.04.15(목) ~ 2021.05.03(월) 17:00
- 코딩 테스트 : 2021.05.08(토) 14:00 ~ 18:00 (4시간)
지원 분야 및 언어
- 지원 분야 : Programming
- 코딩 테스트 언어 : Kotlin
코딩 테스트 난이도(주관적)
-
공채 블라인드 테스트가 TOP였다면, 인턴 코딩 테스트는 맥심커피믹스
- 공채 블라인드 테스트는 6시간 동안 7문제
- 인턴 코딩 테스트는 4시간 동안 5문제
개인적 느낌으로 공채 블라인드 코딩테스트는 코테에서 일반적인 알고리즘을 얼마나 적절하게 잘 활용하는지 테스트 하는 느낌이었습니다.
문제도 장황한 편이고 그 장황한 문제속에서 코딩의 제약사항을 잘 캐치해서 빠르게 풀어야 하는데,
분명 기존 알고리즘으로 풀 수 있지만, 풀다보면 아하, 이 알고리즘을 이렇게 쓸 수도 있겠구나
싶은 난이도로 나옵니다. (언제나 그렇듯 절대 내가 예상한 로또번호는 당첨되지 않..)
문제를 많이 비틀어 출제합니다.
사실 많이 비튼것까진 아니지만,
문제에 어떤 조건이 추가되냐에 따라 적용할 수 있는 알고리즘과 구현이 완전 달라지기도 합니다.
반면에 인턴 코딩테스트는 기본적인 알고리즘과 사용한 알고리즘에 대해 얼마나 잘 파악하고 있는지,
살짝 비튼 문제로 출제하는 것 같습니다.
공채에 비하면 알고리즘에 충실한 편으로 많이 순한맛입니다.
코딩 테스트 문제들 (5문제)
1번째 문제 (구현, 난이도 : 별1)
사실 이 문제를 풀고서도 많은 고민이 있었습니다.
이거 함정이 아닐까 싶을정도로 당황스럽게 쉬운편이었습니다.
대학에 들어와 C프로그래밍을 처음 공부하다보면,
교수님들이 많이 과제로 내주신다는
별 그림을 콘솔로그에 출력하기(aka 별찍기)
와 유사한 느낌이었습니다.
조금 더 개발자 스럽게 풀어보기 위해서 생각을 하던중
내가 지금 이런 문제로 고민하면서 시간을 보낼때가 아니라 한 문제라도 더 풀어야한다
는 것을 깨닫고
그냥 쉽게 풀어넘겼습니다.
2번째 문제 (탐색, 난이도 : 별3)
카카오는 이런 문제를 항상 선호하는 것 같습니다.
길찾기와 비슷한 문제였습니다.
처음에 DFS로 구현하려다 무한 루프에 빠질것 같아 BFS로 바꾸고,
갈 수 있는 방향이 정해져있다는 것과 그래프 탐색에서
해당 위치에서 존재하지 말아야할 값이 있는지를 차근 차근 탐색하는 방식으로 풀었습니다.
3번째 문제 (구현, 난이도 : 별3)
리스트에서 값을 추가하고 삭제하는 과정으로,
원본 결과물과 최종 결과물을 비교해서 원본과 같은 위치에 같은 값이 있으면 O,
아니면(삭제되었다면) X를 출력하는 문제였습니다.
구현하는게 생각보다 까다로웠고, 효율성 테스트가 존재하는 문제였습니다.
정확성 테스트는 모두 통과했지만, 효율성은 10개중 7개만 맞췄습니다.
StringBuffer와 StringBuilder가 효율성테스트 맞춘 갯수가 차이가 있었습니다.
4번째 문제 (최단 거리, 난이도 : 별3)
가장 기본적인 한 정점으로부터 다른 정점으로까지 최단거리를 구하는 것이었지만,
정점과 정점은 방향성과 가중치가 있으며
일부 정점은 그 정점과 연결된 간선의 방향을 모두 반대로 바꾸는 함정이 있습니다.
카카오스럽게 기본 다익스트라로 풀면 안풀리는 문제를 내놨습니다.
(물론 다익스트라로 접근해야할 것 같았습니다.)
시간이 부족하여, 교과서적인 다익스트라 알고리즘에 함정에 대한 함수만 약간 추가했습니다.
채점전, 기본 테스트케이스 2개중 1개만 맞았고 채점을 돌리니 7/10정도 맞았습니다.
5번째 문제 (이진 트리, 난이도 : 별4 예상?)
손도 못댔습니다.
다익스트라, 플로이드 와샬, DFS, BFS, 그래프 탐색은 다 해봤지만
완전 이진트리를 분할 정복하는 방법이 떠오르지 않았고 시간도 없어서 풀지 못했습니다.
문제 자체는 비슷한 류의 문제를 풀어본 적이 있다면 생각보다 쉽게 풀렸을 문제라 보였습니다.
저는 풀어보지 못한 문제라 별4개짜리 문제라 생각합니다.
제가 생각하는 가장 어려운 별 5개짜리 문제는
수학과 DP가 적절히 조합된 문제라고 생각합니다.
코딩테스트 유의사항
- 원칙적으로 정확성과 효율성 모두 통과하지 못한 문제는 맞추지 틀린 문제로 간주 (부분 점수 X)
- 동점자가 발생했을 경우 부분 점수 부여
이번 코딩테스트에서 4/5개를 풀었고, 원칙적으로 2/5개를 맞았습니다.
코딩 테스트 결과 (5/14)
저도 이런 테스트의 문턱을 넘어보는 날이 오네요.. 감동..