목록다이나믹 프로그래밍 (7)
홍우진의 개발 일기장
문제 링크 https://www.acmicpc.net/problem/9656 9656번: 돌 게임 2 상근이가 게임을 이기면 SK를, 창영이가 게임을 이기면 CY을 출력한다. www.acmicpc.net 풀이 코드 n = int(input()) print("CY" if n % 2 else "SK") 코드 해석 짝수면 SK 홀수면 CY를 출력한다.
문제 링크 https://www.acmicpc.net/problem/10211 10211번: Maximum Subarray 크기 N인 정수형 배열 X가 있을 때, X의 부분 배열(X의 연속한 일부분) 중 각 원소의 합이 가장 큰 부분 배열을 찾는 Maximum subarray problem(최대 부분배열 문제)은 컴퓨터 과학에서 매우 잘 알려져 있 www.acmicpc.net 풀이 코드 t = int(input()) for _ in range(t): n = int(input()) arr = list(map(int, input().split())) dp = [0] * n dp[0] = arr[0] for i in range(1, n): dp[i] = max(dp[i-1]+arr[i], arr[i]) pri..
문제 링크 https://www.acmicpc.net/problem/2670 2670번: 연속부분최대곱 첫째 줄은 나열된 양의 실수들의 개수 N이 주어지고, 그 다음 줄부터 N개의 수가 한 줄에 하나씩 들어 있다. N은 10,000 이하의 자연수이다. 실수는 소수점 첫째자리까지 주어지며, 0.0보다 크거나 www.acmicpc.net 풀이 코드 n = int(input()) nums = [float(input()) for _ in range(n)] for i in range(1, n): nums[i] = max(nums[i - 1] * nums[i], nums[i]) print("{:.3f}".format(max(nums))) 코드 해석 숫자들을 float 형식으로 nums 리스트에 저장합니다. 그 후 ..
문제 링크 https://www.acmicpc.net/problem/2491 2491번: 수열 0에서부터 9까지의 숫자로 이루어진 N개의 숫자가 나열된 수열이 있다. 그 수열 안에서 연속해서 커지거나(같은 것 포함), 혹은 연속해서 작아지는(같은 것 포함) 수열 중 가장 길이가 긴 것을 찾 www.acmicpc.net 풀이 코드 N = int(input()) arr = list(map(int, input().split())) cnt = 1 max_l = 1 for i in range(1, N): if arr[i-1] >= arr[i]: cnt += 1 else: cnt = 1 if max_l < cnt: max_l = cnt cnt = 1 for i in range(1, N): if arr[i-1]
문제 링크 https://www.acmicpc.net/problem/14916 14916번: 거스름돈 첫째 줄에 거스름돈 액수 n(1 ≤ n ≤ 100,000)이 주어진다. www.acmicpc.net 풀이 코드 n = int(input()) cnt = 0 i = 0 while True: if n % 5 == 0: cnt += n//5 break else: n -= 2 cnt += 1 if n < 0: break if n
문제 링크 https://www.acmicpc.net/problem/13301 13301번: 타일 장식물 대구 달성공원에 놀러 온 지수는 최근에 새로 만든 타일 장식물을 보게 되었다. 타일 장식물은 정사각형 타일을 붙여 만든 형태였는데, 한 변이 1인 정사각형 타일부터 시작하여 마치 앵무조개 www.acmicpc.net 풀이 코드 n = int(input()) arr = [0]*(n+2) arr[1] = 1 for i in range(2, n+2): arr[i] = arr[i-1] + arr[i-2] print((arr[n]+arr[n+1])*2) 코드 해석 피보나치 수열을 이용하는 문제이다. ((n번째 정사각형 한 변의 길이) + (n+1 번째 정사각형 한 변의 길이)) * 2 = 둘레 라는 둘레 증가..
문제 링크 https://www.acmicpc.net/problem/11726 11726번: 2×n 타일링 2×n 크기의 직사각형을 1×2, 2×1 타일로 채우는 방법의 수를 구하는 프로그램을 작성하시오. 아래 그림은 2×5 크기의 직사각형을 채운 한 가지 방법의 예이다. www.acmicpc.net 풀이 코드 n = int(input()) dp = [0 for _ in range(n+1)] if n