일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- Java
- codeup
- 스프링
- 토이프로젝트
- 프로그래머스
- 파이썬
- react-redux
- 자료구조
- CPU 스케줄링
- 알고리즘
- 타입스크립트
- 공부
- 정렬
- OS
- 코드업
- C++
- react
- 리덕스장바구니
- Redux
- Spring
- 협업
- 분할메모리할당
- js to ts
- memory
- web
- 기초100제
- 백준
- error
- 일상
- Operating System
- Today
- Total
목록파이썬 (157)
감자튀김 공장🍟
✔ 문제 ✔ 풀이 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[..
✔ 문제 ✔ 풀이 import sys input = sys.stdin.readline n = int(input()) nums = list(map(int, input().split())) op = list(map(int, input().split())) minRes, maxRes = int(1e9), -int(1e9) res = nums[0] # 첫번째 숫자 뒤 부터 연산자와 숫자가 나오기 때문 def dfs(idx): global res global minRes, maxRes if idx == n: if res maxRes: maxRes = res return for i in range(4): temp = res if op[i] > 0: if i ..
✔ 문제 ✔ 풀이 import sys input = sys.stdin.readline def col(x, n): for i in range(9): if n == graph[x][i]: return False return True def row(y, n): for i in range(9): if n == graph[i][y]: return False return True def rect(x, y, n): nx = x // 3 * 3 ny = y // 3 * 3 for i in range(3): for j in range(3): if n == graph[nx + i][ny + j]: return False return True def dfs(idx): if idx == len(blank): # 마지막 0까지..
✔ 문제 ✔ 풀이 import sys input = sys.stdin.readline n = int(input()) graph = [0] * n count = 0 def is_promising(x): for i in range(x): if graph[x] == graph[i] or abs(graph[x] - graph[i]) == x - i: return False return True def queen(x): global count if x == n: count += 1 return else: for i in range(n): graph[x] = i if is_promising(x): queen(x+1) queen(0) print(count) ✔ 설명 #Tip 1. 굳이 2차원 배열을 쓸 필요가 없다...
✔ 문제 ✔ 풀이 👾 내 풀이 (216ms) import sys input = sys.stdin.readline n, m = map(int, input().split()) res = [] def dfs(x): if len(res) == m: print(' '.join(map(str, res))) return for i in range(x, n+1): if i >= x: res.append(i) dfs(i) res.pop() dfs(1) ⭐ 다른 풀이 (176ms) import sys input = sys.stdin.readline n, m = map(int, input().split()) s = [] def dfs(x): if len(s) == m: print(*s) return for i in rang..
✔ 문제 ✔ 풀이 import sys input = sys.stdin.readline n, m = map(int, input().split()) res = [] def dfs(): if len(res) == m: print(' '.join(map(str, res))) return for i in range(1, n+1): res.append(i) dfs() res.pop() dfs() ✔ 설명 15650번과 다르게 for문에서 중복을 확인하는 if문이 삭제되었다. ✔ 후기 당연히.. if문만 지우면 될거라 했는데 if문 뿐만 아니라 dfs() 인자값도 제거했어야 했다... 역시 쉬워보여도 늘 쉽지 않지 (つ﹏