알고리즘 91

[Lv_3] 산 모양 타일링

def solution(n, tops): answer = 0 div = 10007 # 우하단 마름모를 제외한 경우의 수 배열 a = [0] * (n + 1) # 우하단 마름모만을 포함하는 경우의 수 배열 b = [0] * (n + 1) a[0] = 1 for i in range(0, n): # 현재 순회 중 top 존재 시 발생 경우의 수 확인 if (tops[i] == 1): a[i + 1] = a[i] * 3 + b[i] * 2 else: a[i + 1] = a[i] * 2 + b[i] * 1 # 현재 정삼각형에서 우하단 마름모인 경우는 앞선 경우의 수와 무관 b[i + 1] = a[i] + b[i] a[i + 1] = a[i + 1] % div; b[i + 1] = b[i + 1] % div; re..

알고리즘 2024.01.25

[Lv_2] 도넛과 막대 그래프

from collections import defaultdict def solution(edges): answer = [0, 0, 0, 0] graph = defaultdict(lambda: [0, 0]) for s, e in edges: graph[s][1] += 1 graph[e][0] += 1 for items in graph.items(): node, num = items if num[0] == 0 and num[1] >= 2: answer[0] = node elif num[0] >= 2 and num[1] >= 2: answer[3] += 1 elif num[0] > 0 and num[1] == 0: answer[2] += 1 # 시작정점에서 뻗어나간 간선의 개수 = 총 그래프 개수 donut ..

알고리즘 2024.01.24