[코딩 테스트 합격자 되기(자바스크립트 편) - 골든래빗](https://goldenrabbit.co.kr/product/jspass/) ## 나만의 예외케이스 찾기 문제 분석 과정에서 주어진 예제 입력 외에도 다른 예외를 찾아야 한다. 이 예외들은 문제 분석 과정에서 찾은 고려해야 할 중요 케이스나, 실제 구현 시에 실수하기 좋은 케이스들이 된다. ~~이것을 어떻게 찾아내야 할까...~~ ## 어디까지 생각해봤는지 꼭 기록하기 어떤 알고리즘을 어떤 근거로 적용하려고 했는지 풀지 못한 것이어도 어디서 막혔는지, 왜 안되었는지를 기록해둬야 어디가 부족했는지를 알아내고 더 공부할 수 있다. ## 코딩 테스트와 실무의 연관성 코딩 테스트랑 실무랑 관련 있나요? 요구사항 분석과 구현력 기르기에 도움이 된다. 직접적인 연관은 없더라도 다- 쓸모가 있다!! ## 문제 분석법 1. 문제를 동작 단위로 분석하기 2. 제약사항을 확인하고 -> 이걸 이용해서 테스트 케이스를 추가한다. 이 제약사항은 알고리즘 결정이나 구현할 때 예외를 처리할때도 유용하다., 3. 입력값 분석 (입력값의 크기 => 시간복잡도를 고려해서 알고리즘을 결정할 수 있다.) 4. 핵심 키워드 => 알고리즘의 결정 힌트가 된다. 100%는 아니어도 헤매는 시간을 줄여줄 수 있다. - 최적의 해 => BFS - 정렬된 상태 => 이진 탐색 - 최단 경로 => 다익스트라, 벨만 - 포드, 플로이드 - 워셜 알고리즘 - 모든 경로 => DFS 5. 데이터의 흐름이나 구성을 파악한다. 삽입, 삭제가 빈번한 경우 (데이터의 흐름) 에는 힙 자료구조를 선택하는 것이 좋다. 이름과 전화번호가 연결된 데이터를 저장해야 하는 경우 (데이터의 구성) 이름을 key로 설정하는 것이 좋다. ## 의사 코드로 설계하기 무작정 구현에 돌입하지 말자! 완성된 코드를 수정하는 것은 오래 걸리지만, 의사코드를 수정하는 것은 간단하다. 1. 의사 코드는 동작 중심으로 작성한다. 이 동작을 실제로 어떻게 구현해야 할지는 구현 과정에서 고민한다. "점수를 입력받는다." 정도로 동작만 작성한다. 2. 의사 코드는 문제 해결 순서대로 정리한다. 의사 코드는 주석으로 남겨서 이걸 기반으로 실제 구현을 하게 된다. 실제로 코드를 짜는 것처럼 실행 순서대로 작성한다. 3. 의사 코드가 잘 돌아갈 것인지를 충분히 고민하고 실제 구현을 시작한다. 실제 구현에 돌입하면 수정하는 것에 시간이 너무 오래 걸린다! 충분히 의사 코드가 잘 돌아갈 것인지를 고민하고 구현한다. ## 시간 복잡도 - 최악의 경우를 고려한다. - 정확한 연산 횟수가 아닌 연산 횟수의 추이를 다룬다 => 이런 표기 방식을 점근적 표기법이라 함 최악의 경우를 점근적 표기법으로 표기하는 방식을 빅오 표기법이라 한다. ## 시간 제한을 기준으로 허용 가능한 시간 복잡도 파악하기 보통은 초당 1000만에서 3000만 사이의 연산 횟수를 허용한다.