큰 기대를 하지 않고 지원했던터라 코딩테스트에 대한 준비가 되어 있지 않았다. 😢
그래서 합격 메일을 받고 평소에 부족했던 알고리즘 파트을 중점적으로 복습했다. (DP, DFS/BFS, Greedy...)
코딩테스트는 Codility 로 치루어졌는데, 다른 코딩테스트 사이트와 다르게 모든 문제들이 영어로 되어있고,
테스트 케이스가 무척 제한적이였다. 따라서 입력 값 범위를 보고 자체적인 케이스를 테스트하는 것이 중요했다.
( 문제에 따라 빈 배열이나, MIN ~ MAX 값이 들어올 때 예외 처리 해주기 )
그리고 시간 복잡도 영역도 점수에 큰 영향을 끼친다. 언어, 실행 환경에 따라 다르지만
보통 아래와 같은 INPUT 범위를 통해 사용할 수 있는 알고리즘을 추측해야 한다.
제한 시간이 1초 기준으로 입력 값의 범위가 다음과 같을 때 (언어, 채점 환경에 따라 달라질 수 있음)
- N의 범위가 ~500 : 시간 복잡도 O(N^3) 로 풀 수 있다.
- N의 범위가 ~2000 : 시간 복잡도 O(N^2) 로 풀 수 있다.
- N의 범위가 ~100,000 : 시간 복잡도 O(NlogN) 로 풀 수 있다.
- N의 범위가 ~10,000,000 : 시간 복잡도 O(N) 로 풀 수 있다.
우선 결과부터 말하자면 "불합격" 이였다. 규정상 문제 유형은 말할 수 없지만, 크게 어렵지 않은 문제들이
출제되었고, 난이도는 Codility Lesson, 프로그래머스 고득점 Kit 을 풀 수 있을 정도면 될 것 같았다.
iOS 파트로 지원해서 최대한 Swift 로 문제를 풀려고 했었는데, 처음 문제에서 막히는 바람에 머리가 하얘졌다.
지금 생각해보면 어떻게 풀어야 할지 감이 잡히는데, 시험 도중에는 도저히 떠오르지 않았다.
지금까지 PS ( Problem Solving ) 를 공부한 기간도 적고, 모르는 문제를 만났을 때 어떻게 접근해야 하는지에 대한 경험도 많이 부족하다고 느꼈다. 2021년에는 프로젝트와 더불어 코딩테스트도 꾸준히 공부해야 겠다고 다짐했다.
'PS > Algorithm' 카테고리의 다른 글
코딩테스트를 위한 Swift 필수 자료구조 구현하기 (2) | 2022.01.11 |
---|---|
이분 탐색 ( Parametric Search, lower, upper Bound / Swift ) - 2 (0) | 2020.10.03 |
이분 탐색 ( Binary Search / Swift ) - 1 (0) | 2020.10.02 |