일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 깊이 우선 탐색
- 그래프 이론
- 배낭 문제
- 수학
- 문자열
- 그래프탐색
- 나는 바보야...
- Docker 원리
- 너비 우선 탐색
- error:0308010C:digital envelope routines::unsupported
- 냅색 알고리즘
- 그래프 탐색
- bfs
- 최장공통부분수열
- Python
- dfs
- db replication
- 정처기 필기
- 클래스
- npm start
- 일단 시도
- Container vs VM
- LCS 알고리즘
- 다이나믹 프로그래밍
- 모듈러 연산 분배법칙
- 최장공통부분문자열
- 동적 계획법
- 파이썬
- lazy evaluation
- 구현
Archives
- Today
- Total
Save my data
백준 1904 : 01타일 (파이썬) 본문
ㅓ간단한 DP 문제였다.
예전에 이것과 비슷한 문제 (피보나치수열로 진행되는 문제) 를 풀어 본 경험이 있었는데,
그것과 매우 비슷하다는 것을 금방 깨달았다.
N = int(input())
dp = [0] * (N + 1)
dp[1] = 1
if N > 1:
dp[2] = 2
for i in range(3, N + 1):
dp[i] = (dp[i - 1] + dp[i - 2]) % 15746
print(dp[N])
다만 15746 으로 나누는 부분에서 메모리 초과 한 번, 인덱스 범위 정해 줄 때 오류 한 번 해서 총 두 번 오답이 나왔는데
인덱스 부분은 오류를 금방 찾았지만 15746 으로 나누는 부분을 늦게 떠올렸다.
신기하면서 이해가 잘 되지 않았던 점은 15746 으로 나눈 나머지를 dp 에 적용시켜서 더해도 정답이 틀리지 않는다는 것이다. 막연히 분배법칙이 통하지 않을까 해서 풀긴 했지만 거의 감으로 푼 것이라 조금 마음에 걸리기는 한다.
그래서 찾아보았는데 15746으로 나누는 것에 대한 이유로 나머지 연산 분배법칙이라는 것이 있다고 한다.
나머지(Modulo) 연산 분배법칙
Modulo 연산의 분배법칙에 대해 알아보자
velog.io
분배법칙 비슷하게 뭔가 적용되지 않을까 하는 감이 맞았던 것이었다.
'알고리즘 & SQL > 백준' 카테고리의 다른 글
백준 10811 : 바구니 뒤집기 (파이썬) (0) | 2023.02.27 |
---|---|
백준 9251 : LCS (파이썬) (0) | 2023.02.24 |
백준 11052 : 카드 구매하기 (파이썬) (0) | 2023.02.24 |
백준 12865 : 평범한 배낭 (파이썬) (1) | 2023.02.23 |
백준 10815 : 숫자 카드 (파이썬) (0) | 2023.02.20 |
Comments