2020 카카오 블라인드 공채 2차 오프라인 코딩 테스트 문제 해설

Source

  • Evernote/Papers/2020 카카오 블라인드 공채 2차 오프라인 코딩 테스트 문제 해설.md

Summary

2020 카카오 블라인드 공채 2차 코딩 테스트는 ‘카카오팔로잉’이라는 가상 SNS의 팔로잉 추천 시스템을 구현하는 문제였다. 목표는 모든 사용자의 팔로잉 수가 20 명 이상이 되도록 하는 것이며, REST API 를 통해 일일 추천 목록을 업로드하고 시뮬레이션으로 평가받았다. 추천 확률은 전화번호부 존재 여부 및 친구의 친구 관계에 따라 가중치가 부여되었다. 해설에서는 Simple(랜덤), Greedy(확률 정렬), Heuristic(조건 필터링 후 정렬), No-sort(조건 필터링만), Smallest(순차적 추천으로 네트워크 효과 활용) 등 다양한 알고리즘 접근법을 비교 분석했다. 시험 결과, Python 이 가장 많이 사용되었으며, 시나리오 1(정적 데이터) 은 약 62% 의 응시자가 해결했으나, 시나리오 2(동적 데이터) 는 약 4% 만 해결하는 등 난이도 차이가 컸다. 이 시험은 최적의 알고리즘보다 종합적인 문제 해결 능력과 단계적 접근을 평가하는 데 의도가 있었다.

Key Points

  • 문제: 가상 SNS ‘카카오팔로잉’의 추천 시스템 구현, 목표는 사용자별 팔로잉 20 명 이상 달성
  • 평가 방식: 일일 추천 목록 업로드 후 시뮬레이션 수행, 목표 달성까지의 추천 횟수(시뮬레이션 횟수) 가 성능 지표
  • 추천 확률 로직: 전화번호부 미등록(+5%), 등록(+30%), 친구의 친구(+10%/인), 내가 팔로우하는 사람의 친구(+10%/인) 등 관계 기반 가중치 적용
  • 알고리즘 접근법 비교: Greedy 는 효율적이지만 정렬로 인한 시간 소모 큼, Smallest 는 정렬 없이 순차적 추천으로 네트워크 효과를 이용해 시간 효율과 성능 균형 우수
  • 시험 결과: 총 349 명 응시, Python 이 주류 언어. 시나리오 1(100 명, 정적) 해결률 62%, 시나리오 2(3000 명, 동적) 해결률 4% 로 난이도 격차 존재
  • 출제 의도: 알고리즘 최적화보다 문제 이해, API 연동, 단계적 해결 능력 등 종합적 문제 해결 역량 평가