데이터의 흐름이나 (문제)구성을 먼저 파악할 것
- 만약 데이터의 삽입과 삭제가 빈번하게 일어나는 상황에서 최댓값 혹은 최솟값을 반복하여 구해야 한다면 힙 자료구조를 고려하는 게 좋을 수 있다.
- 데이터가 50개 미만이고, 입력값을 깔끔하게 정리하기 어렵다면 하드 코딩을 고려하기도 한다.
- 데이터의 값의 차이가 크면 데이터 값 자체를 배열의 인덱스로 활용하는 건 피하는 것이 좋다. (ex, {1, 10100, 5000}으로 데이터가 구성되어 있을 경우, 나머지 2~4999등의 공간은 사용하지 않는 공간이지만 메모리가 할당되므로 낭비이기 때문)
의사코드 작성하기
- 세부 구현까지는 작성하지 말기.
- ex) 국어, 영어 수학 점수를 입력받는다 (O)
- ex) 크기가 256 바이트인 문자열 배열을 3개 선언해서 표준 입력으로 국어, 영어 수학 점수를 입력받는다 (X)
- 문제 해결 순서로 작성하기
- ex) 1. 영어성적 입력, 2. 영어성적이 60점을 넘는지 확인(분기) 2-1. 60점 이상이면 통과, 2-2. 60점 미만이면 실패
- 의사코드가 미리 생각해본 테스트 케이스를 통과할 수 있을 지 고민하기.
- 제약사항을 잘 파악하고 이를 확인할 수 있는 나만의 테스트 케이스를 만드는 것도 방법이다. (예외를 고민해봐야 함)
- 그디리/ 완전 탐색으로 풀어야 할 문제를 정확히 구분한다.
- 입력 값을 분석하면 문제에서 요구하는 알고리즘의 시간 복잡도를 간접적으로 파악할 수 있다.
도저히 문제가 풀리지 않을 경우
- 다른 분들의 풀이를 보고, 손코딩을 하거나 따라서 해본다.
- 다음 날 풀이를 보지 않고 다시 풀어본다. 안되면 풀이 다시 보기
- 내 스스로 코드를 전부 칠 수 있을 때까지 반복
'코딩테스트 > 자료구조 & etc' 카테고리의 다른 글
큐(Queue) (0) | 2025.05.16 |
---|---|
스택 (0) | 2025.05.08 |
배열의 시간 복잡도 (0) | 2025.04.10 |
코딩 테스트 필수 문법 (0) | 2025.04.09 |
시간 복잡도 (0) | 2025.04.09 |