목록전체 글 (271)
DHistory
문제 11055번: 가장 큰 증가하는 부분 수열 수열 A가 주어졌을 때, 그 수열의 증가하는 부분 수열 중에서 합이 가장 큰 것을 구하는 프로그램을 작성하시오. 예를 들어, 수열 A = {1, 100, 2, 50, 60, 3, 5, 6, 7, 8} 인 경우에 합이 가장 큰 증가하는 www.acmicpc.net 풀이 """ 가장 큰 증가하는 부분 수열의 합 """ import sys from copy import deepcopy n = int(sys.stdin.readline().rstrip()) numbers = [0] + list(map(int, sys.stdin.readline().rstrip().split()))[:n] def solution(a): d = deepcopy(a) for i in ra..
문제 1912번: 연속합 첫째 줄에 정수 n(1 ≤ n ≤ 100,000)이 주어지고 둘째 줄에는 n개의 정수로 이루어진 수열이 주어진다. 수는 -1,000보다 크거나 같고, 1,000보다 작거나 같은 정수이다. www.acmicpc.net 풀이 """ d[n]: 연속된 몇 개의 수를 선택하여 가장 큰 합 """ import sys n = int(sys.stdin.readline().rstrip()) numbers = [0] + list(map(int, sys.stdin.readline().rstrip().split()))[:n] def solution(a): d = [0] * len(a) for i in range(1, len(a)): d[i] = max(d[i - 1] + a[i], a[i]) ret..
문제 11053번: 가장 긴 증가하는 부분 수열 수열 A가 주어졌을 때, 가장 긴 증가하는 부분 수열을 구하는 프로그램을 작성하시오. 예를 들어, 수열 A = {10, 20, 10, 30, 20, 50} 인 경우에 가장 긴 증가하는 부분 수열은 A = {10, 20, 10, 30, 20, 50} 이 www.acmicpc.net 풀이 import sys n = int(sys.stdin.readline().rstrip()) numbers = [0] + list(map(int, sys.stdin.readline().rstrip().split()))[:n] def solution(a): d = [1] * (len(a)) for i in range(2, len(numbers)): for j in range(1, ..
문제 1904번: 01타일 지원이에게 2진 수열을 가르쳐 주기 위해, 지원이 아버지는 그에게 타일들을 선물해주셨다. 그리고 이 각각의 타일들은 0 또는 1이 쓰여 있는 낱장의 타일들이다. 어느 날 짓궂은 동주가 지원이 www.acmicpc.net 풀이 """ 00 타일 1 타일 N인 모든 2진 수열을 만들 수 없다. N = 1 => 1 N = 2 => 00, 11 N = 3 => 100, 001, 111 N = 4 => 0011, 0000, 1001, 1100, 1111 2xn 타일과 동일 0 => 2x1 1 => 1x2 """ n = int(input()) MOD = 15746 def solution(n): if n == 1: return 1 a = 1 b = 2 for i in range(3, n +..
문제 2193번: 이친수 0과 1로만 이루어진 수를 이진수라 한다. 이러한 이진수 중 특별한 성질을 갖는 것들이 있는데, 이들을 이친수(pinary number)라 한다. 이친수는 다음의 성질을 만족한다. 이친수는 0으로 시작하지 않 www.acmicpc.net 풀이 """ 이친수 1. 0으로 시작하지 않는다. 2. 이친수에서 1이 "두번 연속"으로 나타나지 않는다. N자일 때, 이친수의 개수는? d[n]: n자리일 때, 0으로 끝나는 이친수의 개수 => 0과 1로 2개씩 생김 a[n]: n자리일 때, 1로 끝나는 이친수의 개수 => 다음은 0으로 끝남 """ n = int(input()) def solution(n): d = [0] * (n + 1) a = [0] * (n + 1) a[1] = 1 fo..