일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- C++
- Java
- CPU 스케줄링
- Redux
- error
- 정렬
- Operating System
- react
- js to ts
- 백준
- 토이프로젝트
- 스프링
- 알고리즘
- Spring
- 타입스크립트
- OS
- 리덕스장바구니
- 코드업
- 협업
- 기초100제
- 분할메모리할당
- 일상
- 자료구조
- memory
- codeup
- react-redux
- 프로그래머스
- 파이썬
- web
- 공부
- Today
- Total
목록백준 (138)
감자튀김 공장🍟
✔ 문제 ✔ 풀이 import sys input = sys.stdin.readline n = int(input()) dp = [0] * (n+1) for i in range(2, n+1): dp[i] = dp[i-1] + 1 # n-1 연산, 횟수 저장 (+1) if i % 3 == 0: dp[i] = min(dp[i], dp[i//3] + 1) # 1을 더하는 이유: dp는 계산 값이 아닌 횟수를 저장 if i % 2 == 0: dp[i] = min(dp[i], dp[i//2] + 1) print(dp[n]) ✔ 후기 만만하게 봤다가 큰 코 다쳤지요..? if continue ~ elif continue 했다가 지맘대로 돌아가서 당황했다... 사실 맞는 코드도 아니여서 적지는 않았지만... (대충 적어..
✔ 문제 ✔ 풀이 🤢 오답 코드1 import sys input = sys.stdin.readline n = int(input()) arr = [] dp = [0] * (n+1) for _ in range(n): arr.append(int(input())) dp[0] = arr[0] dp[1] = arr[0] + arr[1] dp[2] = max(arr[0] + arr[1], arr[0] + arr[2]) for i in range(3, n): dp[i] = max(dp[i-2] + arr[i], dp[i-3] + arr[i-1] + arr[i]) print(dp[n-1]) 🤢 오답 코드2 import sys input = sys.stdin.readline n = int(input()) arr = [0 ..
✔ 문제 ✔ 풀이 import sys input = sys.stdin.readline n = int(input()) tri = [] for _ in range(n): tri.append(list(map(int, input().split()))) for i in range(1, n): for j in range(len(tri[i])): if j == 0: # 가장 왼쪽인 경우 tri[i][j] = tri[i-1][j] + tri[i][j] elif j == len(tri[i]) - 1: # 가장 오른쪽인 경우 tri[i][j] = tri[i-1][j-1] + tri[i][j] else: tri[i][j] = max(tri[i-1][j-1], tri[i-1][j]) + tri[i][j] print(max(t..
✔ 문제 ✔ 풀이 🔥 index error import sys input = sys.stdin.readline n = int(input()) rgb = [] for _ in range(n): rgb.append(list(map(int, input().split()))) for i in range(1, n): rgb[i][0] = min(rgb[i-1][1], rgb[i+1][2]) + rgb[i][0] rgb[i][1] = min(rgb[i-1][0], rgb[i+1][2]) + rgb[i][1] rgb[i][2] = min(rgb[i-1][0], rgb[i+1][1]) + rgb[i][2] print(min(rgb[n-1])) 👾 정답 import sys input = sys.stdin.readline..
✔ 문제 ✔ 풀이 import sys input = sys.stdin.readline n = int(input()) arr = [0] + list(map(int, input().split())) dp = [-1001] * (n+1) for i in range(1, n+1): dp[i] = max(arr[i], dp[i-1] + arr[i]) print(max(dp)) ✔ 설명 가장 큰 값을 구해야하기 때문에 이전까지의 합에 현재 숫자를 더한 값과 현재 위치의 값 중 더 큰 값을 dp에 저장한다. ✔ 후기 1개 이상의 연속된 수를 더해야한다고 하길래 arr에서 1개 합, 2개 합, 3개 합 이렇게 하나씩 다 구하고 값을 비교해야 한다고 생각했다. 분명 그렇게 구현되지 않을 것 같았는데 저 생각이 머리를 지..
✔ 문제 ✔ 풀이 import sys input = sys.stdin.readline n = int(input()) dp = [0] * 102 dp[1] = 1 dp[2] = 1 dp[3] = 1 for _ in range(n): x = int(input()) for i in range(3, x+1): dp[i] = dp[i-2] + dp[i-3] print(dp[x]) ✔ 후기 P(1)부터 P(10)까지 값을 적어놓고 규칙을 찾아가보면 된다. 처음에는 P(5)까지 값을 미리 부여해놔야 하는 줄 알고 P(6)부터 규칙을 찾아봤다. dp[i] = dp[i-1] + dp[i-2] 인줄 알았으나 P(7)에서 규칙이 맞지 않았다. 결국엔 dp[i] = dp[i-2] + dp[i-3] 규칙을 찾고 P(5)와 P(..
✔ 문제 ✔ 풀이 👾 인덱스 에러 import sys input = sys.stdin.readline n = int(input()) dp = [0] * (n+1) dp[1] = 1 dp[2] = 2 for i in range(3, n+1): dp[i] = (dp[i-1] + dp[i-2]) % 15746 print(dp[n]) 🌱 정답 import sys input = sys.stdin.readline n = int(input()) dp = [0] * 1000001 dp[1] = 1 dp[2] = 2 for i in range(3, n+1): dp[i] = (dp[i-1] + dp[i-2]) % 15746 print(dp[n]) ✔ 설명 N = 1 // ( 1 ) N = 2 // ( 00, 11 ) N ..
✔ 문제 ✔ 풀이 👽 시간 초과 - 재귀함수 import sys input = sys.stdin.readline def w(a, b, c): if a 20: return w(20, 20, 20) elif a < b < c: return w(a, b, c-1) + w(a, b-1, c-1) - w(a, b-1, c) else: return w(a-1, b, c) + w(a-1, b-1, c) + w(a-1, b, c-1) - w(a-1, b-1, c-1) while True: a, b, c = map(int, input().split()) if a == -1 and b == -1 and c == -1: break res = w(a, b, c) print("w({}, {}, {}) = {}".format(a..
✔ 문제 ✔ 풀이 import sys input = sys.stdin.readline def fibo1(a): global c1 if a == 1 or a == 2: return 1 else: c1 += 1 return fibo1(a-1) + fibo1(a-2) def fibo2(a): global c2 dp[1], dp[2] = 1, 1 for i in range(3, n): c2 += 1 dp[i] += dp[i-1] + dp[i-2] n = int(input()) dp = [0] * (n + 1) c1, c2 = 0, 0 fibo1(n) fibo2(n) print(c1 + 1, c2 + 1) ✔ 후기 문제에 있는 답안 안보고 풀어봤다. fibo(n-1) + fibo(n-2)인데 헷갈려서 fibo(n..
✔ 문제 ✔ 풀이 😭 코드1 # https://www.acmicpc.net/problem/14889 import sys input = sys.stdin.readline def dfs(idx): global res if idx == n // 2: # 반은 st에 반은 li에 들어가기 때문에 n//2일때 검사 s_res, l_res = 0, 0 for i in range(0, n): if i not in st: # st에 포함되지 않은 인원은 li에 배치 li.append(i) for i in range(0, n // 2 - 1): for j in range(i+1, n // 2): s_res += arr[st[i]][st[j]] + arr[st[j]][st[i]] l_res += arr[li[i]][li[..