[Python] 백준 #9465- 스티커
·
코딩테스트/백준[Python]
문제 9465번: 스티커 첫째 줄에 테스트 케이스의 개수 T가 주어진다. 각 테스트 케이스의 첫째 줄에는 n (1 ≤ n ≤ 100,000)이 주어진다. 다음 두 줄에는 n개의 정수가 주어지며, 각 정수는 그 위치에 해당하는 스티커의 www.acmicpc.net 코드 My answer # 메모리 49440 KB / 시간 1516 ms import sys input=sys.stdin.readline t_c=int(input()) for k in range(t_c): n=int(input()) sticker=list(list(map(int,input().split())) for _ in range(2)) dp = [[0]*(n+1) for _ in range(2)] dp[0][1],dp[1][1]=stick..
[Python] 백준 #1912- 연속합
·
코딩테스트/백준[Python]
문제 1912번: 연속합 첫째 줄에 정수 n(1 ≤ n ≤ 100,000)이 주어지고 둘째 줄에는 n개의 정수로 이루어진 수열이 주어진다. 수는 -1,000보다 크거나 같고, 1,000보다 작거나 같은 정수이다. www.acmicpc.net 코드 My answer import sys input=sys.stdin.readline n=int(input()) num=list(map(int,input().split())) dp=[0]*n for i in range(n): if(num[i]>=0):dp[i]=max(0,dp[i-1])+num[i] else: if(dp[i-1]+num[i]>=0): dp[i]=dp[i-1]+num[i] else: dp[i]=num[i] print(max(dp)) Another an..
[Python] 백준 #11053- 가장 긴 증가하는 부분 수열
·
코딩테스트/백준[Python]
문제 11053번: 가장 긴 증가하는 부분 수열 수열 A가 주어졌을 때, 가장 긴 증가하는 부분 수열을 구하는 프로그램을 작성하시오. 예를 들어, 수열 A = {10, 20, 10, 30, 20, 50} 인 경우에 가장 긴 증가하는 부분 수열은 A = {10, 20, 10, 30, 20, 50} 이 www.acmicpc.net 코드 My answer import sys input = sys.stdin.readline n=int(input()) dp=[0]*n dp[0]=1 array=list(map(int,input().split())) for i in range(1,n): tmp=[dp[j] for j in range(i) if(array[j]
[Python] 백준 #17626- Four Squares
·
코딩테스트/백준[Python]
문제 17626번: Four Squares 라그랑주는 1770년에 모든 자연수는 넷 혹은 그 이하의 제곱수의 합으로 표현할 수 있다고 증명하였다. 어떤 자연수는 복수의 방법으로 표현된다. 예를 들면, 26은 52과 12의 합이다; 또한 42 + 32 + 1 www.acmicpc.net 코드 My answer import sys input = sys.stdin.readline n=int(input()) dp=[0]*(n+1) array=[] for i in range(int(n**0.5)+1): dp[i*i]=1 for i in range(1,n+1): for j in range(1,int(i**0.5)+1): if(dp[i]==0):dp[i]=dp[j*j]+dp[i-j*j] else: dp[i]=min(..
[Python] 백준 #9655- 돌 게임
·
코딩테스트/백준[Python]
문제 9655번: 돌 게임 상근이가 게임을 이기면 SK를, 창영이가 게임을 이기면 CY을 출력한다. www.acmicpc.net 코드 My answer import sys input = sys.stdin.readline n=int(input()) dp=[0]*(n+1) for i in range(1,n+1): if(i
[Python] 백준 #10870- 피보나치 수 5
·
코딩테스트/백준[Python]
문제 10870번: 피보나치 수 5 피보나치 수는 0과 1로 시작한다. 0번째 피보나치 수는 0이고, 1번째 피보나치 수는 1이다. 그 다음 2번째 부터는 바로 앞 두 피보나치 수의 합이 된다. 이를 식으로 써보면 Fn = Fn-1 + Fn-2 (n ≥ 2)가 www.acmicpc.net 코드 My answer import sys input = sys.stdin.readline n=int(input()) dp=[0]*(n+2) dp[0], dp[1]=0, 1 for i in range(2,n+1): dp[i]=dp[i-1]+dp[i-2] print(dp[n]) Another answer def fibonacci(n): if n