본문 바로가기
알고리즘

BOJ 1354번(무한 수열2)

by eunyoung 2023. 4. 4.

난이도


골드 V

 

 

풀이


처음 풀이에서는 메모이제이션으로 안 풀고 재귀만 돌려서 시간 초과가 났고,

 

두번째 풀이에서는 맵이 아닌 리스트를 활용해서 리스트에 N+1 크기만큼을 미리 만들어두어서 메모리 초과가 났다.

 

세번째 풀이에서는 리스트가 아닌 맵으로 풀었더니 통과했다

-> 탐색해보면 모든 수를 다 따지는 것이 아니다. 따라서 리스트 보다는 맵을 사용하는 것이 더 적절한 것 같다.

 

import sys

input=sys.stdin.readline

checkmap = {}

N,P,Q,X,Y=map(int,input().split())

def get(n):
    if n<=0:
        return 1
    elif n in checkmap:
        return checkmap[n]
    else:
        checkmap[n]=get(n//P-X)+get(n//Q-Y)
        return checkmap[n]

print(get(N))

 

 

링크


https://www.acmicpc.net/problem/1354

 

1354번: 무한 수열 2

첫째 줄에 5개의 정수 N, P, Q, X, Y가 주어진다.

www.acmicpc.net

 

'알고리즘' 카테고리의 다른 글

BOJ 15787번(기차가 어둠을 헤치고 은하수를)  (0) 2023.04.05
프로그래머스 추억 점수(Java/Python)  (0) 2023.04.05
BOJ 9742번 - 순열  (0) 2023.04.04
BOJ 10610번(30)  (0) 2023.04.02
BOJ 13417번(카드 문자열)  (0) 2023.04.02