목록전체 글 (271)
DHistory
문제 15624번: 피보나치 수 7 첫째 줄에 n번째 피보나치 수를 1,000,000,007으로 나눈 나머지를 출력한다. www.acmicpc.net 풀이 """ 0번째 0 1번째 1 2번째부터는 바로 앞 두 피보나치 수의 합 """ import sys n = int(sys.stdin.readline().rstrip()) def solution(n): a, b = 0, 1 for i in range(2, n + 1): if not i % 2: # 미리 나누어서 저장해야한다. # 큰 숫자가 되면 비트를 많이 사용하기 때문에 연산 속도가 오래걸린다. a = (a + b) % 1000000007 else: b = (a + b) % 1000000007 return a if not n % 2 else b prin..
문제 2491번: 수열 0에서부터 9까지의 숫자로 이루어진 N개의 숫자가 나열된 수열이 있다. 그 수열 안에서 연속해서 커지거나(같은 것 포함), 혹은 연속해서 작아지는(같은 것 포함) 수열 중 가장 길이가 긴 것을 찾 www.acmicpc.net 풀이 """ d[n]: n일 때, 가장 긴 구간이 되는 길이 """ import sys n = int(sys.stdin.readline().rstrip()) numbers = list(map(int, sys.stdin.readline().rstrip().split()))[:n] def solution(numbers): # 가장 긴 구간이 되는 길이의 최솟값은 1이다. d1 = [1] * len(numbers) d2 = [1] * len(numbers) for ..
문제 2839번: 설탕 배달 상근이는 요즘 설탕공장에서 설탕을 배달하고 있다. 상근이는 지금 사탕가게에 설탕을 정확하게 N킬로그램을 배달해야 한다. 설탕공장에서 만드는 설탕은 봉지에 담겨져 있다. 봉지는 3킬로그 www.acmicpc.net 풀이 """ d[n]: n kg을 가져갈 설탕 봉지의 최소 개수 """ n = int(input()) INF = 10**9 + 1 def solution(n): d = [INF] * (n + 1) for i in range(3, n + 1): if not i % 3: d[i] = min(d[i], i // 3) if not i % 5: d[i] = min(d[i], i // 5) d[i] = min(d[i], d[i - 3] + 1, d[i - 5] + 1) retu..
문제 25644번: 최대 상승 미래를 예측하는 능력이 있는 정균이는 앞으로 $N$일간 ANA 회사의 주가가 어떻게 변하는지 정확히 예측할 수 있다. 정균이는 예측한 결과를 바탕으로 ANA 회사의 주식 한 주를 적당한 시점에 사고 www.acmicpc.net 풀이 import sys n = int(sys.stdin.readline().rstrip()) INF = 10**9 + 1 stocks = [INF] + list(map(int, sys.stdin.readline().rstrip().split())) def solution(a): d = [0] * len(a) min_value = INF for i in range(1, len(a)): if min_value > a[i - 1]: min_value = ..
문제 19947번: 투자의 귀재 배주형 2020년에 학교로 복학한 주형이는 월세를 마련하기 위해서 군 적금을 깨고 복리 투자를 하려고 한다. 주형이가 하려는 투자에는 3가지 방법의 투자 방식이 있다. 1년마다 5%의 이율을 얻는 투자 ( www.acmicpc.net 풀이 """ A: 1년마다 5%의 이율을 얻는 투자 B: 3년마다 20%의 이율을 얻는 투자 C: 5년마다 35%의 이율을 얻는 투자 투자 방식은 매년 변강할 수 있다. 매년 이율은 소쉄 이하를 버림해서 받는다. 11,111 A: 1년후 555 B: 3년후 2,222 C: 5년후 3,888 C 방식으로 투자 시 4년이 지난 시점이라면 받을 수 있는 이자는 0원 d[n] = n년 후 받을 총액 """ h, y = map(int, input()...