프로그래머스에서 하반기 채용 대비를 위해 웨비나를 개최했다.
ZOOM 온라인으로 참여할 수 있기에 신청을 하였고 한시간 반정도의 웨비나를 진행했다.
코딩테스트를 보는 이유
요약하자면 기업에서 저비용으로 지원자의 총 모수를 필터링하기 위한 방법이기 때문이다.
코딩테스트 준비
코딩 테스트를 위한 코어과목을 설명해주셨다.
- 자료구조
- 알고리즘
- 이산수학 (선택)
코딩 테스트 연습 사이트 활용
백준과 프로그래머스를 예시를 들며 활용 예시를 설명하였다.
아무래도 강사님이 프로그래머스 문제출제자이기 때문에 프로그래머스를 통한 코딩테스트를 위주이지만,
내 경험으로는 대부분 기업들은 자체 코딩테스트 툴을 통해 시험을 보았다.
개인적인 의견이지만
백준은 문제가 많지만 실제 코테에 나오는 것을 따로 분류하여야하는 번거로움이 있으며
프로그래머스는 문제가 조금 적다는 느낌을 받았다.
영어 문제에 큰 불편함이 없으면 HackerRank나 LeetCode가 좋은 것 같다.
코딩테스트 팁
문제 출제자이신 강사님의 노하우를 배울 수 있었다.
요약하자면,
- 라이브러리를 최대한 활용한다.
- 대체로 1번 문제에 난이도가 낮은 문제를 배치하므로 1번 부터 풀이한다.
- 부분 점수를 딸 수 있는 문제를 가늠하기 위하여 남은 문제를 최대한 읽어보자.
- 2번 이후의 배치된 문제는 특정 자료구조/알고리즘을 사용하는 것이 핵심 포인트 일 수 있다.
- 한 문제만 남은게 아니라면, 같은 문제를 1시간 이상 붙잡고 있지 말자.
- 80%이상의 테스트케이스를 통과한 경우라면 디버깅에 너무 많은 시간을 쓰지 않는다.
- 테스트 케이스 크기로 시간복잡도를 유추해보자
마지막 '테스트 케이스 크기로 시간복잡도를 유추' 내용은 아예 생소한 접근이였다.
위의 이미지는 n >= 10000 이라면
최선으로는 O(n), 최악으로는 O(n * log n)을 가질 것으로 생각하자는 내용이다.
( 대충 10,000에서 132,900번 연산횟수를 가진다 )
예를 들어, 문제에서 주어진 가장 최대의 반복 조건이 n >= 10000 라면
n^2 가 필요한 이중반복문을 쓰면 10000*10000이 된다.
그렇게 되면 디버깅 시간제한 안에 풀 수 없음을 예상하고,
해당 문제는 이중반복문을 쓰면 안되겠구나하고 유추한다.
마무리
웨비나를 듣기 전에 해당 웨비나를 통해 내가 얻을 것을 무엇인가!?를 고민했을 때 아래 2가지를 집중적으로 생각했다.
[1] 어떻게 코딩테스트 공부를 해야하는가?
[2] 어떤 알고리즘이 자주나오는가?
[1]의 경우 구현문제, BFS, DFS 의 기초 알고리즘을 알고 분류별로 풀어본다고 알고있었고,
강의 이후에도 크게 달라지지 않았다.
[2] 또한 알고있는 것과 크게 다르지 않았다.
하지만 문제를 풀 때의 팁이나 더 효율적으로 시간을 쓰는 법 등,
코딩테스트를 효율적으로 치르는 좋은 인사이트를 얻을 수 있었다.
'이모저모' 카테고리의 다른 글
인프콘(INFCON) 2024 후기 (0) | 2024.08.31 |
---|