본문 바로가기
알고리즘 PS/알고리즘 일반

온라인 코딩 테스트의 사전준비

by 백호루이 2022. 9. 17.
반응형

1. 연습장과 필기 도구

재귀 구조를 구현할 때 머릿속으로만 구조를 그려내면 실수하기가 쉽다. 

처음부터 연습장에 값의 변화나 최종 결과를 기록하고 머릿속에 떠올린 구조와 비교하면서 풀이해나가자.

 

2. 자신만의 코드 스니펫 준비

코딩테스트 시 자주 쓰이는 동작들에 대해 코드 스니펫을 미리 만들어 두면 도움이 된다.

예를 들어 연결리스트를 뒤집거나 삭제하는 등의 작업들은 갑자기 구현하려면 헷갈리기도 하고 시간이 걸리는데, 이런 작업에 대한 코드를 미리 만들어두면 좋다.

 

3. 모든 테스트 케이스를 통과하도록 풀어야

코딩 테스트 시에는 충분히 생각하고 문제가 없는지 코드를 다시 한번 더 꼼꼼히 확인 후에 제출하는 편이 유리하다.

실무에서처럼 일단 돌아가는 코드를 제출하고 테스트를 지속적으로 돌려보면서 오류를 수정해 나가는 방식은 대부분의 코딩 테스트에서는 적용하기가 어렵다는 점을 명심하자.

 

4. 타임아웃이 발생하는 경우

테스트 케이스 중에는 일부러 입력값에 수천, 수만 개를 입력해 두고 타임아웃을 유발하는 경우도 있다.

시간 복잡도가 O(n^2)인 알고리즘은 타임아웃이 발생하고 O(n) 또는 O(nlogn) 정도는 되어야 풀리는 상황을 만들어내기 위해서다.

 

5. 예외 처리를 잊지 말자

실무에서는 여러 가지 예외 케이스에 대한 테스트를 나중에 만들어서 검증해 볼 수 있으나, 코딩 테스트는 처음부터 예외 처리를 잘 하고 제출해야 나중에 번거로운 문제가 발생하지 않는다.

 

6. 잘못 접근한 풀이, 어떻게 대처할까

문제를 풀다보면 여러가지 난처한 경우에 맞닥뜨리게 된다.

예를 들면, BFS로 한참을 풀다가 DFS로 써야 풀 수 있다는 것을 나중에야 발견한 경우이다.

혹은 최댓값이 아닌 최솟값을 구하는 문제였다든가, 문제를 잘못 이해해서 중복 문자열을 무시했는데 꼭 필요한 경우라던지... 이미 시간이 지나서 되돌리기엔 시간이 모자란 경우이다.

 

이런 일이 생기지 않도록 스스로 문제당 제한 시간을 정해두고 그 시간을 초과할 경우 바로바로 다음 문제로 넘어가자.

적어도 풀 수 있는 문제들은 모두 풀이할 수 있도록 빠르게 다음 문제로 넘어가야, 나중에 시간이 모자라서 쉽게 풀 수 있는 문제도 놓치는 경우가 없다.

 

7. 적당한 스트레스 상황에서 문제 푸는 연습을 하자

평소에 문제를 풀 때, 시험 환경과 비슷한 환경에서 연습을 하자. (시간 제한, 이동 제한 등)

그래야지 극도의 긴장감 상태인 진짜 시험에서 당황하지 않고 실력 발휘를 할 수 있다.

반응형

댓글