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
- 브루트포스
- ice cream parlor
- DirectX
- the longest increasing subsequence
- gas
- count triplets
- LCS
- making anagrams
- boj 1074
- c++
- DirectX12
- boj 6443
- special string again
- pcce 기출문제 풀이
- lock free stack
- dp
- find the running median
- string construction
- 프로그래밍공부
- boj 1717
- PCCE
- pccp 기출문제 풀이
- lock based stack
- two characters
- boj 11657
- lock based queue
- find the town judge
- 지게차와 크레인
- 2025 프로그래머스 코딩챌린지 1차예선
- the maximum subarray
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