1. 문제 분석
전체 시간의 50~60% 정도는 문제 분석에 할애하는 것이 좋다.(코딩 테스트 = 문제 풀이 능력 확인 시험)
1)문제 쪼개서 분석하기
문제를 동작 단위로 쪼개서 분석 → 한 번에 생각해야 하는 양 ↓
2)제약 사항 파악하기
사용할 알고리즘을 정할 때와 코드 구현 단계에서 예외를 걸러낼 때 유용
3)입력값 분석하기*
시간 복잡도 고려
4)논리적vs그리디 판단하기
그리디: 현재 상황에서 가장 좋은 것을 선택하는 근시안적인 방법
문제 중에는 그리디한 방법으로 풀리는 것과 그렇지 않은 것이 있다. 수학적, 논리적인 방법으로 정답이 나올 수 있을지 검토한 후에 그리디하게 접근하도록 한다.
5)데이터 흐름과 구성 파악하기*
자료구조 고려
2. 의사 코드로 설계하기
의사 코드(pseudo code): 프로그램의 논리를 설명하고 알고리즘을 표현하기 위해 작성한 지침
의사 코드 원칙
- 프로그래밍 언어 x, 자연어로 작성
- 자유롭게 작성(정해진 형식 x)
1)동작 중심으로 작성
세부 구현에 신경을 쓰면 의사 코드의 목적이 설계가 아닌 구현으로 변질된다.
성적 입력받기
(1)국어, 영어, 수학 점수를 입력받는다. (O)
(2)크기가 256바이트인 문자열 배열을 3개 선언해서 표준 입력으로 국어, 영어, 수학 점수를 입력받는다.(X)
2)문제 해결 순서로 작성
이후 코드 분석에도 도움(실제 구현할 코드의 주석이 되기도 함)
1 영어 성적 입력
2 영어 성적이 60점을 넘는지 확인
2-1 60점 이상이면 통과
2-2 60점 미만이면 실패
3)충분히 테스트하기
구현 단계로 갈수록 잘못된 부분을 수정하는 데 드는 비용은 점점 커진다. 의사 코드가 테스트 케이스를 통과할 수 있을 것 같을 때 구현을 시작해야 한다.
프로젝트 할 때도 의사 코드 작성하는 방법을 알고 있었으면 더 쉽게 진행할 수 있었을 것 같다.
'코딩테스트' 카테고리의 다른 글
코딩테스트 배열 관련 함수 (0) | 2024.04.22 |
---|---|
자바 코딩테스트 메서드 기초: 구현 노하우 (0) | 2024.04.18 |
자바 코딩테스트 메서드 기초: 람다식 (0) | 2024.04.18 |
자바 코딩테스트 기본 문법 (0) | 2024.04.16 |
알고리즘 효율 분석: 시간 복잡도 (0) | 2024.04.15 |