https://www.acmicpc.net/problem/2580 유형 난이도 완료일 특이사항 백트래킹 골드4 23/02/05 - 230205 #include #include #include #include using namespace std; vector pair_vec; vector number_guide; vector row_vec; //*** 재귀함수 안에서 선언했을 때는 시간초과 받음 *** vector column_vec; vector box_vec; int arr[9][9]; //스도쿠 배열 //int void Recursion(int pair_idx, int depth) { if(depth == pair_vec.size()) //같아지면 모든 칸을 채운 것 -> 가능한 후보로 모든 칸을 채..
알고리즘
https://www.acmicpc.net/problem/1967 1967번: 트리의 지름 파일의 첫 번째 줄은 노드의 개수 n(1 ≤ n ≤ 10,000)이다. 둘째 줄부터 n-1개의 줄에 각 간선에 대한 정보가 들어온다. 간선에 대한 정보는 세 개의 정수로 이루어져 있다. 첫 번째 정수는 간선이 연 www.acmicpc.net #include #include #include #include using namespace std; int n, p, c, cost; vector tree[10001]; int maxi = -1; int each[10001]; int Recursion(int root) { if(each[root]>-1) return each[root]; if(tree[root].size() ..
맞다고 생각한 코드가 자꾸 틀려서 원인을 찾다가 두 가지 오류를 찾았다. 첫째는 최댓값, 최솟값을 초기화할 때 최솟값 20억, 최댓값을 0으로 잡은 것이었다. 최댓값이 음수일 가능성을 배제해서 바로 오답처리 됐었다. else if(oper_set[i-1]==3) { if(temp>n; for(int i =0; i>arr[i]; cin >> oper[0] >> oper[1] >> oper[2] >> oper[3]; // 0:+, 1:-, 2:*, 3: /. int blank = n-1; PlusRecursion(0, 0); cout
출력값은 올바르게 나오는데 계속 6%에서 틀렸다고 해서 오랫동안 고민했다. 시간 초과면 몰라도 틀렸다고 하는 이유를 알 수 없었다. 질문글들을 찾아보다가 출력값이 모두 올바른데 틀렸다는 것은 index 범위 오류라던가 메모리 초과 오류 등 Undefined Behavior와 관련있을 것이라는 댓글을 보았고 내 코드에서 그럴 위험이 있는 부분들을 생각해보았다. #include #include #include #include using namespace std; // 퀸 후보 위치 선정 후 조건 만족하는지 확인 -> 수직/대각 연장선상에 퀸이 없는지 확인(n*n개 중 n개를 선정하는 모든 경우의 수를 반복) // OR 후보 위치를 선정할 때 한 위치 선정하면 그 다음은 앞선 퀸의 수직/대각 연장선을 피해서 ..