🚩 브루트포스(완전탐색) thinking 가능한 모든 경우를 구한다음, 최소값을 구하면 시간초과가 뜬다. 최악의 경우 (2N!/N!*N!)*T = 10,400,600*50 = 520,030,000 번의 연산을 해서 그런것 같다. 그래서 애초에 부분합이 결과값보다 크면 함수가 끝나도록 처리해줬다. 현재 좌표를 함수의 인자로 받아, 방문한적이 없다면 방문체크 후 합을 더하며 재귀적으로 함수가 돌아가도록 구성했다. 코드 T = int(input()) dx = [0, 1] dy = [1, 0] def dfs(x, y): global res, tmp if res 제한시간때문에 가지치기 해야함 return if x == N-1 and y == N-1: re..
🚩 트리(tree) 풀이 1 왼쪽 자식, 오른쪽 자식을 세트로 같이 더해주는 방식 T = int(input()) for tc in range(1, T+1): N, M, L = map(int, input().split()) # N:노드개수, M:리드노프개수, L:출력할 노드번호 tree = [0 for _ in range(N + 1)] for i in range(M): n, v = map(int, input().split()) tree[n] = v # 방법1 if N % 2 == 0: # 노드개수가 짝수인 경우를 위해 설정 tree.append(0) for i in range((N//2)*2, 1, -2): tree[i // 2] = tree[i] + tree[i + 1] print("#{} {}".for..
🚩 트리(tree) 코드 T = int(input()) def size(root): global cnt if tree[root][0]: cnt += 1 size(tree[root][0]) if tree[root][1]: cnt += 1 size(tree[root][1]) for tc in range(1, T+1): E, N = map(int, input().split()) # 간선개수, root tmp = list(map(int, input().split())) # 부모-자식 tree = [[0] * 3 for _ in range(E+2)] for i in range(E): # [왼쪽자식, 오른쪽자식, 부모노드] parent, child = tmp[i * 2], tmp[i * 2 + 1] tree[chi..
- 2018 카카오 공채
- 파이썬
- Python
- git 미러링
- 삼성기출
- 21609 상어 중학교
- BFS
- swea
- 기지국설치
- 20056 마법사 상어와 파이어볼
- merge 에러
- react
- 브루트포스
- dfs
- 프로그래머스
- 백준
- dp
- 삼성코테
- merge에러
- 17406 배열돌리기4
- 20057 마법사 상어와 토네이도
- 보석쇼핑
- 2579 계단오르기
- 영어끝말잇기
- 알고리즘
- Total
- Today
- Yesterday