본문 바로가기

분류 전체보기37

[SWEA 5258][Python] [파이썬 S/W 문제해결 최적화] 3일차 - 해피박스 코드1 - DFS ## SWEA 5258 dfs 풀이 T = int(input()) def dfs(w,k,local_value): global result if w >= 0 : if k > N : if result < local_value : result = local_value else : dfs(w-w_arry[k],k+1,local_value+v_arry[k]) dfs(w, k + 1, local_value) for test_case in range(1,T+1): W,N = map(int, input().split()) w_arry = [0 for _ in range(N+1)] v_arry = [0 for _ in range(N+1)] for i in range(1,N+1): w_arry[i], v.. 2022. 12. 28.
[SWEA 5260][Python][파이썬 S/W 문제해결 최적화] 3일차 - 부분 집합의 합 코드 ## SWEA 5260 T = int(input()) for test_case in range(1,T+1): N,K = map(int, input().split()) result = 0 arry = [ [N,0] ] while arry : cur = arry.pop() if cur[0] == 0 : continue bound = cur[0]*(cur[0]+1)/2 + cur[1] if bound >= K : if cur[0]+cur[1] == K : result += 1 elif cur[0] + cur[1] < K : arry.append([ cur[0]-1,cur[0]+cur[1] ]) arry.append([ cur[0]-1, cur[1] ]) print(f"#{test_case} {result.. 2022. 12. 28.
[SWEA 5262][Python] [파이썬 S/W 문제해결 최적화] 4일차 - 정렬된 부분 집합 코드 ## SWEA 5262 T = int(input()) for test_case in range(1, T + 1): arry = list(map(int, input().split())) N = arry[0] arry = arry[1:] rank_arry = [1]*N for i in range(N): for j in range(i+1) : if i != j : if arry[i] > arry[j] : tmp = rank_arry[j]+1 if tmp > rank_arry[i] : rank_arry[i] = tmp print(f"#{test_case} {max(rank_arry)}") 풀이 기본 rank_arry를 1로 초기화 한 뒤 순차적으로 반복하며 원소가 더 큰 경우에만 해당 원소의 rank에 1.. 2022. 12. 28.
[SWEA 5263][Python] [파이썬 S/W 문제해결 최적화] 4일차 - 그래프 최소 비용 코드 ## SWEA 5263 T = int(input()) for test_case in range(1, T + 1): N = int(input()) arry = [list(map(int, input().split())) for _ in range(N)] result = -float("inf") dist_arry = [[float("inf")]*N for _ in range(N) ] for i in range(N): for j in range(N): if arry[i][j] != 0 : dist_arry[i][j] = arry[i][j] for k in range(N): for i in range(N): if i!=k : for j in range(N): if j!=k and j!=i : dist_arr.. 2022. 12. 28.