목록python (182)
rose_brown
1. 문제https://school.programmers.co.kr/learn/courses/30/lessons/42892 2. 코드python 1import syssys.setrecursionlimit(10**6)def preorder(y, x, answer): node = y[0] idx = x.index(node) left, right = [], [] for i in range(1, len(y)): if node[0] > y[i][0]: right.append(y[i]) else: left.append(y[i]) answer.append(node[2]) if len(right) > 0: preorder(right, x[:idx]..
1. 문제https://school.programmers.co.kr/learn/courses/30/lessons/49191 2. 코드python 1from collections import defaultdictdef solution(n, results): answer = 0 win, lose = defaultdict(set), defaultdict(set) for winner, loser in results: win[loser].add(winner) lose[winner].add(loser) for i in range(1, n+1): for w in win[i]: lose[w].update(lose[i]) ..
1. 문제https://school.programmers.co.kr/learn/courses/30/lessons/49189 2. 코드python 1from collections import dequedef solution(n, edge): answer = 0 route = [0] * (n+1) graph = [[] for i in range(n+1)] queue = deque() for e in edge: graph[e[0]].append(e[1]) graph[e[1]].append(e[0]) queue.append(1) route[1] = 1 while queue: now = queue.popl..
1. 문제https://school.programmers.co.kr/learn/courses/30/lessons/42586 2. 코드python 1def solution(progresses, speeds): answer = [] while progresses: for i in range(len(progresses)): progresses[i] += speeds[i] count = 0 while progresses and progresses[0] >= 100: progresses.pop(0) speeds.pop(0) count += 1 if count > 0: ..
1. 문제https://school.programmers.co.kr/learn/courses/30/lessons/42584 2. 코드python 1def solution(prices): size = len(prices) answer = [0]*size for i in range(size): for j in range(i+1,size): if prices[i] 풀이마지막 시점이 계속 사용될 것이라서 size로 prices크기(마지막 시간)을 지정answer에 0값을 넣음현재(i)_prices가 다음(j)_prices보다 작거나 같으면 +1만약 현재(i)_prices가 크면 멈춤 python 2def solution(prices): stack = ..
1. 문제https://school.programmers.co.kr/learn/courses/30/lessons/42897 2. 코드python 1def solution(money): dp1 = [0] * len(money) dp1[0] = dp1[1] = money[0] for i in range(2, len(money)-1): dp1[i] = max(dp1[i-1], money[i] + dp1[i-2]) dp2 = [0] * len(money) dp2[0] = 0 dp2[1] = money[1] for i in range(2, len(money)): dp2[i] = max(dp2[i-1], money[i] + dp2[..
1. 문제https://school.programmers.co.kr/learn/courses/30/lessons/42898 2. 코드python 1def solution(m, n, puddles): dp = [[0] * m for _ in range(n)] dp[0][0] = 1 for y in range(n): for x in range(m): if ([x+1, y+1] in puddles) or ((y,x)==(0,0)): continue dp[y][x] = (dp[y-1][x] + dp[y][x-1]) %1000000007 return dp[-1][-1]풀이주어진 크기만큼 dp생성dp[0][0]=1로..
1. 문제https://school.programmers.co.kr/learn/courses/30/lessons/43105 2. 코드python 1def solution(triangle): dp = [[0, *t, 0]for t in triangle] for i in range(1, len(triangle)): for j in range(1, i+2): dp[i][j] += max(dp[i-1][j-1], dp[i-1][j]) return max(dp[-1])풀이Top-Down 방식 사용dp 생성 → 이때 index오류가 나지 안도록 앞뒤에 0 추가맨 위에서 분터 하나씩 내려가면서 계산가장 큰 값 출력 python 2def so..
1. 문제https://school.programmers.co.kr/learn/courses/30/lessons/42895 2. 코드python 1def solution(N, number): dp = [set() for i in range(9)] for i in range(1,9): case = dp[i] case.add(int(str(N)*i)) for j in range(1,i): for k in dp[j]: for l in dp[i-j]: case.add(k+l) case.add(k-l) ..
1. 문제https://school.programmers.co.kr/learn/courses/30/lessons/12945 2. 코드python 1def solution(n): answer=[0,1] for i in range(2,n+1): f=answer[i-1] + answer[i-2] answer.append(f % 1234567) return answer[n]풀이F(0) = 0, F(1) = 1 지정F(2)값부터 동적 계획법(dynamic programming)을 적용하여 값을 저장이때 %1234567 안해서 오류남→ 오버플로우 발생했음 python 2def solution(n): a, b = 0, 1 for i in range(n): ..