일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 시작해요 언리얼 2022
- 오류
- DP
- W3Schools
- c++
- 프로그래밍
- Basic
- C#
- Programming
- Tutorial
- 재귀
- 파이썬
- 기초
- loop
- Class
- python
- dynamic
- Algorithm
- 문제풀이
- Unity
- 백준
- w3school
- guide
- parameter
- Material
- dfs
- UE5
- Unreal Engine 5
- String
- github
- Today
- Total
목록Algorithm (107)
행복한 개구리

더보기 더보기 n = int(input()) tri = [list(map(int, input().split())) for i in range(n)] idx = tri[1].index(max(tri[1])) for i in range(1, n): tri[i][idx] += max(tri[i-1][idx-1:idx+1]) idx = tri[i].index(max(tri[i])) print(max(tri[-1])) 경로에 있는 최댓값만 골라서 더하는 방식으로 작성했습니다. 하지만 지나치는 경로의 합이 최대인 것을 구하는 것이 문제이므로 각 줄마다의 경로에서 최댓값을 고르는 것이 정답은 아닙니다. n = int(input()) tri = [list(map(int, input().split())) for i in..

N = int(input()) rgb = [list(map(int, input().split())) for i in range(N)] for i in range(1, N): rgb[i][0] += min(rgb[i-1][1], rgb[i-1][2]) rgb[i][1] += min(rgb[i-1][0], rgb[i-1][2]) rgb[i][2] += min(rgb[i-1][0], rgb[i-1][1]) print(min(rgb[-1])) rgb 리스트에 주어진 rgb의 비용을 리스트로 저장해줍니다. 그리고 for문에 세가지 분기를 정하여 만약 i번째 집이 r,g,b 일경우에 색이 겹치지 않는 i-1번째 집의 최소비용은 얼마인지 rgb[i]에 계속하여 저장하며 활용합니다. rgb리스트에서 가장 마지막요소인 ..

T = int(input()) dp = [0 for i in range(100)] for i in range(5): if i < 3: dp[i] = 1 else: dp[i] = 2 for i in range(T): N = int(input()) for i in range(5, N): dp[i] = dp[i-5] + dp[i-1] print(dp[N-1]) 수열의 규칙을 찾아봅시다. P(N)에서 N이 5일때까지는 별 규칙이 없지만 N이 5이상이라면 P(N) = P(N-1) + P(N-5)의 규칙을 가집니다. dp리스트를 입력받을 수 있는 범위에 맞게 생성해줍니다. 값은 0으로 설정합니다. 지정한 인덱스의 값이 0이라면 아직 P(N)이 구해지지 않은 상태인 것입니다. P(N)에서 N이 1~5일 때는 규칙없이..

↓ 틀린코드 더보기 더보기 N = int(input()) dp = [0 for i in range(1000000)] dp[0] = 1 dp[1] = 2 def tile(n): if dp[n] != 0: return dp[n] else: dp[n] = tile(n-2) + tile(n-1) return dp[n] tile(N-1) result = dp[N-1] print(result % 15746) 재귀 오류가 떴습니다. 최대로 실행할 수 있는 깊이를 초과했답니다. import sys input = sys.stdin.readline print = sys.stdout.write N = int(input()) dp = [0 for i in range(1000000)] dp[0] = 1 dp[1] = 2 for..

import sys input = sys.stdin.readline def w(a, b, c): if a 20: return w(20, 20, 20) if dp[a][b][c] != 0: return dp[a][b][c] if a < b < c: dp[a][b][c] = w(a, b, c-1) + w(a, b-1, c-1) - w(a, b-1, c) return dp[a][b][c] dp[a][b][c] = w(a-1, b, c) + w(a-1, b-1, c) + \ w(a-1, b, c-1) - w(a-1, b-1, c-1) return dp[a][b][c] dp = [[[0 for _ in range(21)] for _ in range(21)] for _ in range(21)] while True:..

T = int(input()) zero = [1, 0, 1] one = [0, 1, 1] def Fibonacci(n): if n >= len(zero): for i in range(len(zero), n + 1): zero.append(zero[i-1] + zero[i-2]) one.append(one[i-1] + one[i-2]) print('{} {}'.format(zero[n], one[n])) for i in range(T): Fibonacci(int(input())) 주어진 횟수만큼 피보나치를 실행했을 때 0과 1이 얼마만큼 호출되는지 구하는 문제입니다. 따라서 0과 1얼마나 호출되는지 규칙을 찾아봅니다. 0 1 2 3 4 5 0 1 0 1 1 2 3 1 0 1 1 2 3 5 피보나치함수에 주..