SWEA 6

SWEA 5177 - 이진 힙

https://swexpertacademy.com/main/learn/course/subjectDetail.do?courseId=AVuPDN86AAXw5UW6&subjectId=AWOVJ-_6qfsDFAWg&&# 처음 든 생각 - 노드의 개수+1 개 만큼 담을 수 있는 힙을 불러와주고 - 하나씩 append하면서 부모 노드와 비교하면서 필요한 경우 스왑을 해줘야겠다. 나의 답 T = int(input()) from collections import deque for test_case in range(1, T + 1): N = int(input()) num_list = deque(list(map(int, input().split()))) min_heap = [0] def check_parent(i): gl..

SWEA 5147 - Subtree

https://swexpertacademy.com/main/learn/course/subjectDetail.do?courseId=AVuPDN86AAXw5UW6&subjectId=AWOVJ-_6qfsDFAWg&&# 처음 든 생각 - 부모와 자식 간의 관계임을 어떻게 나타낼까 -> [부모 , [자식들 노드] ] 형식으로 번호에 맞춰 매겨야겠다. - subtree 노드 개수를 확인하기 위해 DFS를 해야겠네 -> DFS 코드 구현 어떻게 했더라... 나의 답 T = int(input()) for test_case in range(1, T + 1): E,N = map(int, input().split()) tree =[ [0,[]] for _ in range(E+2)] visited = [0 for _ in r..

SWEA 5110 - 수열 합치기

https://swexpertacademy.com/main/learn/course/subjectDetail.do?courseId=AVuPDN86AAXw5UW6&subjectId=AWOVJ1r6qfkDFAWg 처음 든 생각 - 반복문으로 새로운 수열의 첫째 원소랑 기존 배열의 원소들과 하나씩 비교해주면서 위치를 찾은 다음 합쳐주면 되겠다 나의 답 T = int(input()) for test_case in range(1, T + 1): N, M = map(int, input().split()) arr = [float('inf')] cnt = 0 for _ in range(M): a = list(map(int, input().split())) for i in range(N*cnt+1): if a[0] < a..

SWEA 5102 - 노드의 거리

https://swexpertacademy.com/main/learn/course/subjectDetail.do?courseId=AVuPDN86AAXw5UW6&subjectId=AWOVIoJqqfYDFAWg 처음 든 생각 - 이건 무조건 BFS다 -> 큐로 구현하고 방문 여부에 따라 반복문으로 노드를 하나씩 추가해주면서 확인하면 된다 - 이동한 거리를 측정하기 위해서 노드 번호와 거리를 같이 다뤄야겠다. 나의 답 T = int(input()) from collections import deque for test_case in range(1, T + 1): V, E = map(int,input().split()) g = [[] for _ in range(V+1) ] for _ in range(E): a,b..

SWEA 5099 - 피자 굽기

처음 든 생각 - 전체 피자를 관리하는 큐와 화덕의 큐 두 개를 생성해야겠다 - 화덕 큐에 피자가 없어질 때까지 반복문을 돌고 popleft, append를 조건에 따라 처리해주면 되겠다. 나의 답 T = int(input()) from collections import deque for test_case in range(1, T + 1): N,M = map(int, input().split()) every = list(map(int, input().split())) for i in range(len(every)): every[i] = [i+1, every[i]] q_pizza = deque(every) q_fire = deque([q_pizza.popleft()]) result = [] while q_..

SWEA 4881 - 배열 최소 합

처음 든 생각 - 일단 백트래킹이고 (내가 더럽게 못하는 유형) - n-queens 문제랑 비슷한데 대각선만 빠진 형태네 - 각 열에 대해서 하나씩 선택해가면서 모든 값을 비교해봐야겠다. def search(i, s): global result if s > result: return elif i == N: result = min(result,s) else: for j in range(N): if col[j] == 0: // 열 방문 찍고 col[j] = 1 // 그 다음 행으로 넘어가서 탐색 search(i+1, s+a[i][j]) // 다시 복귀 -> 백트래킹 col[j] = 0 T = int(input()) for test_case in range(1, T + 1): N = int(input()) a..

728x90