기술 문제를 푸는 다섯 단계


1. 문제의 모호한 점에 대하여 면접관에게 질문을 한다.

-명확하지 않은 부분에 대해 질문

-좋은 질문 : 자료형은 무엇인가?/데이터의 양은?/어떤 가정을 해야하는가?/사용자는 누구인가?


2. 알고리즘을 설계한다.

-시간과 공간복잡도는?

-데이터가 많아지면 어떻게 되는가?

-내 설계로 인해 다른 문제가 발생하지 않는가?(변형 이진 탐색 트리를 만들었을 경우 나의 설계가 기존의 삽입, 탐색, 삭제 시간에 영향을 미치지는 않는가?)

-다른 이슈나 한계점이 있다면 적절한 타협안을 만들었는가? 타협안이 최적으로 동작하지 않는 시나리오는?

-데이터의 특징이 명시되어 있다면 그 특징을 활용하였는가?

-처음부터 완벽할 수 없으니 시작 코드를 최적화시켜 나가면 됨


3. 가상코드(수도코드)를 먼저 작성한다.

-면접관에게 후에 코드로 변환할 것이라 알리는 것이 좋음


4. 코드를 작성한다.

-자료구조를 충분히 활용 : 기존의 자료구조를 활용하거나 스스로 정의하여 사용

-코드가 복잡하게 보이지 않도록 : 정중앙부터 써내려가지 말고 왼쪽 위부터


5. 코드를 테스트하고, 오류를 교정한다.

-테스트 경우

      • 극단적인 경우 : 0, null, 음수, 최댓값, 최솟값
      • 사용자 실수 : 올바른 값의 입력이 아닌 이상한 값(null, 음수, ...)
      • 일반적인 경우

-알고리즘이 복잡하거나 복잡한 연산이 포함되어 있다면 코딩 도중에 테스트해볼 것

-실수 발견시 왜 그 버그가 발생하게 됐는지 이유를 찾을 것(깊이 생각하고 수정해야 함)

+ Recent posts