- 문제 설명 - 문제 풀이 각 팀의 능력치 합의 최소치는 백트래킹에 익숙하다면 쉽게 구할 수 있지만 두 팀을 중복되지 않게 짜기 위한 최적 방법을 찾아내는게 생각보다 헷갈렸다. 안그러면 계속 시간 초과가 된다. 때문에 재귀함수 인자를 넘겨줄때 pos(다음 값)값 + 1이 아닌 현재 반복값 + 1을 해줘야 된다. 팀은 한 팀만 구하면, 즉 n/2만큼만 구하면 나머지 다른 팀은 정해져 있으므로 depth는 n/2일 때 결과값을 갱신하면 된다. - 코드 #include #include using namespace std; int n; int S[22][22]; bool visit[12]; int result = -1; int start[12]; int link[12]; void make_team(int po..
- 문제 설명 어렸을 때 자주 해봤던 스도쿠 퀴즈이다. 이 문제는 백트랙킹 기법을 사용해 쓸모없는 연산을 최소화 시키는게 관건이다. 그러기 위해서 순차적으로 다음과 같은 방식으로 동작해야한다. - 문제 풀이 1. 9x9 크기의 배열을 만든다. 2. 빈 공간은 0으로 대체하기 때문에 값이 0인 곳들의 인덱스(x, y)를 저장할 배열을 추가로 만든다. 3. x, y를 저장한 배열을 처음부터 끝까지 돌면서 해당 좌표값에 1부터 9까지의 수를 넣으며 들어갈 수 있는 수라면 다음 좌표값을 진행하는 방식으로 동작한다. 4. 다음 좌표값에서 해를 찾지 못하면 그 전 좌표값에서 다른 해를 찾아본다. 5. 3,4 과정을 반복하며 모든 좌표값의 해를 찾았으면 진행중이 었던 백트랙킹을 중지시켜준다. (들어오는 입력은 스도쿠..