분류 전체보기 (158) 썸네일형 리스트형 [백준/11057/파이썬] 오르막 수 - DP 소스코드 n = int(input()) dp = [1]*10 for i in range(1,n) : for j in range(1,10) : dp[j] += dp[j-1] print(sum(dp)%10007) 알고리즘 알고리즘을 설계하다 보니 너무 막막해서 한번씩 써보았다. 그랬더니 원하는 숫자를 구하기 위해서는 그 전 숫자와 그 전의 위 숫자를 더하면 된다는 규칙을 발견했다. dp라는 유형이라고 알고 있어서 이런 식으로 접근할 수 있었지만 아니라면.. 어려웠을 것 같다. [백준/17425/파이썬] 약수의 합 소스코드 import sys MAX = 1000000 dp = [0] * (MAX + 1) s = [0] * (MAX + 1) for i in range(1, MAX + 1): #1부터 최대값까지 j = 1 # i에 곱할 j를 선언 while i * j 코드 상황에 맞추어 두 구현체(PyPy3, Python3)를 적절하게 사용하는 것이 효율적이라고 할 수 있다. https://ralp0217.tistory.com/entry/Python3-%EC%99%80-PyPy3-%EC%B0%A8%EC%9D%B4 Python3 와 PyPy3 차이 Python3 와 PyPy3 차이 평소에 알고리즘 문제를 풀면서 Python을 지원하는 언어를 선택할 때, Python3와 PyPy3가 대표적으로 있었다. 원래 알던 개념은 .. [백준/17427/파이썬] 약수의 합2 소스코드 N = int(input()) ans = 0 for i in range (1,N+1): ans += (N//i) * i print(ans) 알고리즘 틀린풀이 N = int(input()) def sum_yaksu(n): return sum([i for i in range(1, n+1) if n % i == 0]) ans = 0 for i in range (1,N+1): ans += sum_yaksu(i) print(ans) 문제 그대로 약수의 합을 구하는 함수를 만들고 for문을 돌면서 합을 구하는 알고리즘을 짰는데 시간 초과가 났다. DP문제도 아니고 이거에서 시간을 어떻게 줄일까 생각하다가 수학적으로 접근해야하는 문제임을 깨달았다. 진짜 설명 6까지 더해야 한다고 할때 1 -> 1 ( 1 ).. [백준/4375/파이썬] 1 소스코드 def one(n): ones = [1] i = 1 while (1): if ones[-1] % n == 0 : return ones[-1] else : ones.append(ones[-1]+10**i) i += 1 while (1): try: n = int(input()) except: break print(len(str(one(n)))) 알고리즘 n의 배수라는 건 결국 어떤수를 n으로 나눴을때 나머지가 0 이라는 것이다. 따라서 1로만 이루어진 list를 만들어서 ( ones[1,11,111,...]) 마지막 숫자 + 10의 배수를 해주면 1로만 이뤄진 list가 생성이 된다. 마지막 자리에 있는 숫자가 나눠떨어지면 그 숫자를 리턴해주고 결과는 그 숫자의 길이를 출력해주면 된다. [백준/16974/파이썬] 레벨 햄버거 - 재귀 소스코드 N,X = map(int,input().split()) bur = [1] * 51 pat = [1] * 51 for i in range(1, N+1): bur[i] = 2 * bur[i-1] + 3 pat[i] = 2 * pat[i-1] + 1 def eat(n, x): if n == 0: return x if x == 1: return 0 elif x [백준/2003/파이썬] 수들의 합2 - brute force 소스코드 N,M = map(int,input().split()) A= list(map(int,input().split())) start=0 answer=0 end=0 while start 앞의 원소를 뺌) [백준/1309/파이썬] 동물원 - DP 소스코드 n = int(input()) dp =[1,3,7] for i in range (2,100001): dp.append((dp[i]*2 + dp[i-1])%9901) print(dp[n]%9901) 알고리즘 점화식 (dp[i]*2 + dp[i-1])만 찾으면 쉽게 풀리는 문제였다. 다만 처음에 메모리초과 에러가 났는데 찾아보니 계산할때마다 9901의 나머지를 추가해줘야 했다. 나머지로 계산을 해도 전체 결과에서 나머지 계산을 한게 같게 되는걸 알게 되었다. [백준/14889/파이썬] 스타트와 링크 소스코드 from itertools import combinations N = int(input()) startlink = [list(map(int, input().split())) for _ in range(N)] answer = int(1e9) num = [i for i in range(N)] team = list(combinations(num,N//2)) for start_player in team: start_total = 0 link_total = 0 link_player = list(set(num)-set(start_player)) for i,j in list(combinations(start_player,2)): start_total += startlink[i][j] start_total +.. 이전 1 ··· 12 13 14 15 16 17 18 ··· 20 다음