일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 파이썬
- 나머지
- 11057
- 순열
- 11기
- 6603
- 코틀린
- 괄호
- 뒤로가기
- 11054
- 11053
- 안드로이드
- 코테
- expo
- 9095
- Kotlin
- lcm
- 앱
- permutation
- 백준
- 홈화면
- Android
- Python
- 최소공배수
- itertools
- Combination
- 매일11시
- LCS
- 1260
- 1182
- Today
- Total
목록9095 (3)
황소개발자
#include int main() { int t; scanf("%d", &t); int arr[11] = {}; arr[0] = 1; arr[1] = arr[1 - 1]; arr[2] = arr[2 - 2] + arr[2 - 1]; arr[3] = arr[3 - 3] + arr[3 - 2] + arr[3 - 1]; for (int i = 4; i < 11; i++) { arr[i] = arr[i - 3] + arr[i - 2] + arr[i - 1]; } for (int i = 0; i < t; i++){ int n; scanf("%d", &n); printf("%d\n", arr[n]); } } 끝에 3을 붙여서 되거나 2를 붙여서 되거나 1을 붙여서 되거나
뭐야 짬밥먹고 푸니 간단하네 import sys input = sys.stdin.readline def go(x, n): global count if x == n: count += 1 if x > n: return go(x + 1, n) go(x + 2, n) go(x + 3, n) t = int(input()) for i in range(t): n = int(input()) count = 0 go(0, n) print(count) 이게 최선의 풀이는 아닙니다. 아래 글이 최적의 코드입니다. 백준 15988 파이썬 python : 1, 2, 3 더하기 3 @@황소처럼 우직하게@@ 갓바텀업 그가 있지 않았다면 자신감을 얻지 못했을 것이다. import sys input = sys.stdin.readline..
import sys input = sys.stdin.readline def go(sum, n): if sum == n: return 1 if sum > n: return 0 return go(sum + 1, n) + go(sum + 2, n) + go(sum + 3, n) t = int(input()) for i in range(t): n = int(input()) print(go(0, n)) 재귀를 써서 풀었습니다. 1. 목표하는 값에 도달했으면 경우의 수 1 증가 2. 목표하는 값을 초과하면 버리기 3. 목표하는 값을 향해 달려가는데, 1을 증가하거나 2를 증가시키거나 3을 증가시키거나 쉽죠?