Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 잔디 기부 캠페인
- depth-stencil
- 렌더링 파이프
- pcce 기출문제 9번 지폐 접기
- constant buffre
- PCCE
- root signature
- pcce 기출문제 10번 공원 풀이
- 프로그래밍공부
- boj 1991
- texture mapping
- boj 5567
- 수식 복원하기
- python 고대 문명 유적 탐사
- c++ 1991
- 티스토리챌린지
- pcce 기출문제 10번 공원
- DirectX
- 코드트리 고대 문명 유적 탐사
- 잔디 기부
- directx 그래픽스
- pccp 기출문제 풀이
- 백준 5567
- pcce 기출문제 10번 지폐 접기 풀이
- c++ 5567
- 오블완
- DirectX12
- pcce 기출문제 풀이
- 고대 문명 유적 탐사
- gemmasprint
Archives
- Today
- Total
오구의코딩모험
[Python] 1351번 : 무한 수열 본문
반응형
문제 3줄 요약
1. A0 = 1
2. i 번째 값 = ⌊i/P⌋ 번째 값 + ⌊i/Q⌋ 번째 값
3. ⌊ x ⌋ = x를 넘지 않는 가장 큰 정수
⌊ ⌋ 가 오타인가 싶었지만,
아래 힌트를 보니 위의 설명과 같은 기호였다.
위의 기호는
i/P 와 같은 나눗셈에서는 소수점을 지운 값
즉, 몫에 해당한다.
따라서
피보나치 함수에서 사용했던 상향식과 메모리얼을 이용하여
값을 구해주었다.
from sys import stdin
# 상향 접근 + 메모리얼
def func(num):
if num == 0:
return 1
else:
if num//P not in num_dict:
num_dict[num//P] = func(num//P)
if num//Q not in num_dict:
num_dict[num//Q] = func(num//Q)
return num_dict[num//P] + num_dict[num//Q]
if __name__ == "__main__":
N, P, Q = map(int, stdin.readline().split())
# 메모리얼 기능을 해줄 딕셔너리
num_dict = {}
print(func(N))
끝!
반응형
'프로그래밍 공부 > 백준 알고리즘' 카테고리의 다른 글
[Python] 14503번 : 로봇 청소기 (0) | 2023.02.16 |
---|---|
[Python] 14502번 : 연구소 (0) | 2023.02.15 |
[Python] 1043번 : 거짓말 (0) | 2023.02.14 |
[Python] 1021번 : 회전하는 큐 (0) | 2023.02.14 |
[Python] 1003번 : 피보나치 함수 (0) | 2023.02.12 |
Comments