인접리스트를 비교대상의 우선순위로 정렬해서 비교하는 것이 핵심이다. 문제: https://www.acmicpc.net/problem/16964 https://github.com/surinoel/algorithm/blob/master/16964.cpp
전형적인 dp문제 top-down 구성은 생각해볼 문제 문제: https://www.acmicpc.net/problem/1890 https://github.com/surinoel/algorithm/blob/master/1890.cpp
사이클을 구하는 dfs 문제: https://www.acmicpc.net/problem/10451 https://github.com/surinoel/algorithm/blob/master/10451.cpp
시뮬레이션 시간에 대해 방향 정보를 어떻게 접근하느냐에서 시간이 걸렸다. 매번 검사하는 것보다 제한이 10000 이하인 것을 이용해 미리 방향정보를 저장했다 문제: https://www.acmicpc.net/problem/3190 https://github.com/surinoel/algorithm/blob/master/3190.cpp
브루트포스 1. (0, 1) 순열을 이용해 n개에서 m개 선택 2. 집마다 치킨거리의 최소값 구해서 최소합 구하기 3. 각 경우마다 최소합과 비교해서 정답 도출 순열이라면 13!(>10!)으로 시간 안에 풀지 못하지만 조합문제이므로 큰 시간복잡도가 아니다. 문제: https://www.acmicpc.net/problem/15686 https://github.com/surinoel/algorithm/blob/master/15686.cpp
알고리즘 문제에서 2차원 맵에서 회전하는 경우가 많다 동서남북보다는 90도 방향으로 회전하는 동북서남으로 배열을 미리 초기화한다 int dx[4] = { 0, -1, 0, 1 }; int dy[4] = { 1, 0, -1, 0 };