티스토리 뷰

VII. 기술적 문제

준비 방법

1. 최대한 포기하지 않고 직접 풀도록 노력하기

2. 코드를 종이에 직접 작성하기

3. 코드를 테스트하기

4. 종이의 코드를 컴퓨터에 옮겨 실제로 실행해보기

5. 가상 면접을 많이 해보기

 

알고 있어야 하는 개념들

자료구조 알고리즘 개념
연결리스트 (Linked Lists) 너비 우선 탐색 (Breadth-First Search) 비트 조작(Bit Manipulation)
트리, 트라이(Tries), 그래프 깊이 우선 탐색 (Depth-First Search) 메모리(스택 vs 힙)
스택 & 큐 이진 탐색 재귀
힙(Heaps) 병합 정렬(Merge Sort) 동적 프로그래밍(Dynamic Programming)
Vector / ArrayList 퀵 정렬 big-O 시간 & 공간
해시테이블    

 

 

문제 푸는 방법

1. 경청

2. 예제: 명확하고 충분히 큰 예제 사용, 특이한 예제 X

3. 무식하게 풀기 (brute force)

4. 최적화: 새로운 예제 만들기, 비효율적인 바아법 호라용, 시간과 공간 실익 비교, 정보 미리 계산, 해시테이블, 가능한 최선의 수행시간(BCR)

5. 검토: 의사 코드 작성 먼저 해보고 다시 한 번 확인

6. 구현: 모듈화된 코드 사용, 에러 검증, 다른 클래스나 구조체 사용, 좋은 변수명 사용

7. 테스트: '개념적' 테스트 부터, 버그 발생하는 부분 살펴보기, 작은 규모 테스트 돌려보기, 특별한 경우(nulll, 단일 원소, 극단입력 등) 고려

 

 

댓글