브루트 포스 (스타트와 링크) combinations를 이용해 N번 까지의 숫자를 조합 만약 N이 4일 때 case = [ [0,1],[0,2],[0,3],[1,2],[1,3],[2,3] ] case_B = [x for x in range(N) if x not in case_A] 리스트 컴프리헨션을 이용해 case 원소 중에서 case_A 원소를 제외한 리스트 알고리즘 문제/브루트 포스 2022.01.21
DFS + 백트래킹 (연산자 끼워넣기) 백준 14888번 내 기준 dfs를 활용한 백트래킹 정석 문제 1. modify 리스트에 연산자의 개수를 저장 2. dfs 함수로 깊이 depth, 총 점수 total, 연산자의 개수를 변수로 넘김 3. 깊이가 N이 될 때 마다 total의 최댓값, 최솟값을 저장하고 함수를 빠져나오면 깊이가 N-1인 다른 dfs 함수가 실행되어 또 다시 total의 최대,최소 판별 4. 이렇게 모든 경우의 수를 백트래킹으로 판별가능 알고리즘 문제/백트래킹 2022.01.19
DFS + 백트래킹 (테트로미노) 원래는 브루트 포스로 하나하나 대입해서 풀었는데 코드도 더럽고 내 취향이 아니라 다르게 풀어봤음 DFS를 이용하여 값을 더해가는 풀이 idx = 1 일 때(즉, 두개의 블럭을 선택했을 때) 새로운 블럭에서 다음 블럭을 탐색하는 것이 아니라 다시 기존블럭에서 탐색하게 만들면 ㅗ,ㅏ,ㅓ,ㅜ 모양을 만들 수 있다. 가지치기 하는 코드 2차원배열에서 최대값을 찾아서 max(map(max, graph)) 선택할 수 있는 남은 블럭의 갯수만큼 (3 - idx) 곱해주고 현재 누적합 total 에 더해서 max_result 와 비교해주는 방식 가지치기 안하니까 시간초과 나옴 ***방문처리 주의하자*** 알고리즘 문제/백트래킹 2022.01.19
트리 (트리 깊이 구하기) A - B B - C C - D D - E 즉 트리의 깊이가 4가 되는 트리가 있다면 문제의 조건을 만족함 dfs 함수에서 깊이를 나타내는 count 변수를 넘겨주면서 count==4가 된다면 1을 출력하고 프로그램을 종료 알고리즘 문제/트리 2022.01.19