- x좌표와 y좌표를 분리해서 생각하기
x좌표만 있다고 생각하고 문제를 더 쉽게 풀어보고 이후에 y좌표를 추가하면 어떻게 풀 수 있는지 생각하는 접근 방법이다.
- 순서를 강제하기
주어진 문제가 임의의 순서를 추가 하였을 때 더 쉽게 접근할 수는 없는지 생각해보는 접근이다.
보통 dp문제에서 많이 사용하는 접근 방법이다.
- 주어진 문제를 반으로 나누기
주어진 문제를 반으로 나누었을 때 왼쪽 범위에서 시작하고 오른쪽 범위에서 끝나는 답을 비교적 구하기 쉬운지 (O(n))
판단하여 분할정복으로 푸는 접근 방법이다.
- 뒤에서부터 생각하기
보통 앞에서 부터 결정하면 결정하기 난해한 문제들은 뒤에서부터 결정하였을 때 쉽게 풀리는 경우도 있다.
- 일단 쉬운 알고리즘으로 생각하기
먼저 쉬운 알고리즘으로 접근하여 규칙 또는 최적화가 가능한 부분을 찾고 개선하는 접근 방법이다.
- 답을 정해놓고 구하는게 더 쉬운지?
임의의 답을 정하고 해당 답이 참인지 거짓인지 판별하는게 더 쉽다면 파라매트릭 서치를 생각해본다.
- 새로운 공간, 조건, 제약 등을 추가
문제에 없는 새로운 조건이나 제약, 공간등을 추가하고 더 쉬운 문제를 푸는 접근 방법이다.
- 전처리
알고리즘 중에 미리 계산할 수 있는 부분이 존재하는지 생각해보고 미리 연산하고 저장하고 이용
알고리즘 작성시 꿀팁
- 함수를 잘 쓰자
- 읽기 좋은 코드를 쓰자
- 좋은건 배우자
- 입력개수를 먼저 보고 시간복잡도를 생각하자
- 전역 변수를 쓰자
- 동적할당, 포인터는 고민하지 말자