다른 사람들이 작성한 코드를 보며, 다양한 문제풀이 접근 방식이나 코딩 스킬을 습득해라!
코드로 구현하기 전
에예외 상황
을 충분히 생각하고,사전에 테스트 케이스를 추가
하라.
즉, 문제 분석 과정에서 테스트케이스를 추가하라.
- 못 푼다고 그 자리에서 그만두고 정답보기 (X)
- (문제는 풀지 못했지만) 어디까지 생각해봤는지 일단 기록하기.
-> 생각을 기록해두는 것 만으로도 도움이 엄청 된다.
개념을 습득했다면, 정말 이해했는지 확인하는 방법으로는 내용을 요약하는 것이다.
글, 수식, 그림 모두 활용해도 좋다.
언어를 활용한다는 것의 기준은?
- 변수 선언하기
- 함수 정의하기
- 컬렉션 자료형 다루기
- 조건문, 반복문 사용하기
-> 해당 사항을 잘 할 줄 안다면 언어를 활용할 준비가 되었다는 것.
- 문제를 쪼개서 분석하기
-> 문제 전체를 한번에 분석하는 것보다, 문제를동작 단위로 쪼개서 분석
해라.- 제약 사항을 파악하고 테스트 케이스를 추가하기
-> 제약 사항을 사전에 분리/파악하고 이를 대비해서 테스트 케이스를 미리 추가해라.- 입력값을 분석하기
-> 입력값이 100만개이면, O(N^2) 의 방법으로는 절대 통과할 수 없다. (알고리즘 뭐 쓸지 사전 파악)- 그리디하게 접근할 때는 근거를 명확히 하기.
-> 그리디 문제가 아닌데, 그리디로 접근하면 폭망한다.- 데이터 흐름이나 구성을 파악하기.
-> 삽입/삭제가 빈번하며, 최댓값/최솟값을 반복한다면 Heap 자료구조를 고려해야 하듯이, 데이터 흐름과 구성을 파악하는 것은 중요하다.
의사코드는 프로그램의 논리를 설명하고 알고리즘을 표현하기 위해 작성한 일종의 지침서이다.
- 원칙1 : 프로그래밍 언어로 작성하면 안된다.
- 원칙2 : 일반인도 이해할 수 있는 자연어로 작성해야한다.
- 원칙3 : 일정한 형식없이 자유롭게 작성한다.
세부 구현을 고려하는 순간, 의사코드는 설계가 아닌, 구현으로 변질되어 버린다.
- 국어,영어,수학 점수를 입력받는다 ( O )
- 크기가 256 바이트인 문자열 배열 3개 선언 후, 국어,영어,수학 점수를 입력받는다 ( X ) -> 프로그래밍 요소는 배제하라
문제 해결 순서대로 작성해야 한다.
- 영어 성적 입력
- 영어 성적이 60점을 넘는지 확인(분기)
- 60점 이상 : 통과
- 60점 미만 : 실패
구현을 하고 테스트를 검증했을 때 실패한다면, 수정이 점점 어려워진다.
구현에 들어가기 전, 충분한 테스트 케이스와 테스트를 진행해봐라.