반응형 전체 글252 [백준][Python] 11660번 구간 합 구하기 5 11660번: 구간 합 구하기 5 첫째 줄에 표의 크기 N과 합을 구해야 하는 횟수 M이 주어진다. (1 ≤ N ≤ 1024, 1 ≤ M ≤ 100,000) 둘째 줄부터 N개의 줄에는 표에 채워져 있는 수가 1행부터 차례대로 주어진다. 다음 M개의 줄에는 네 www.acmicpc.net 코드 import sys n, m = map(int,input().split()) n_list = [[0] * (n+1)] for _ in range(n): a = [0] + list(map(int,sys.stdin.readline().split())) n_list.append(a) for i in range(1,n+1): for j in range(1,n+1): n_list[i][j] += n_list[i-1][j] +.. 2022. 6. 20. [백준][Python] 1439번 뒤집기 1439번: 뒤집기 다솜이는 0과 1로만 이루어진 문자열 S를 가지고 있다. 다솜이는 이 문자열 S에 있는 모든 숫자를 전부 같게 만들려고 한다. 다솜이가 할 수 있는 행동은 S에서 연속된 하나 이상의 숫자를 잡고 모 www.acmicpc.net 코드 n = list(map(int,(input()))) start = n[0] cnt = [0]*2 cnt[start] += 1 for i in range(1,len(n)): if n[i] != start: start = n[i] cnt[start] += 1 print(min(cnt)) 설명 0의 연속된 묶음과 1의 연속된 묶음이 각각 몇 번씩 나오는지 cnt를 이용하여 확인했다. 더 적게 나오는 수를 뒤집는 것이 행동의 최대 횟수이다. 2022. 5. 25. [백준][Python] 2294번 동전 2 2294번: 동전 2 첫째 줄에 n, k가 주어진다. (1 ≤ n ≤ 100, 1 ≤ k ≤ 10,000) 다음 n개의 줄에는 각각의 동전의 가치가 주어진다. 동전의 가치는 100,000보다 작거나 같은 자연수이다. 가치가 같은 동전이 여러 번 주 www.acmicpc.net 코드 import sys n,k = map(int,input().split()) cost = [] dp = [10001] * (k+1) dp[0] = 0 for _ in range(n): cost.append(int(sys.stdin.readline().rstrip())) for c in cost: for i in range(1,k+1): if i-c >= 0: dp[i] = min(dp[i-c]+1,dp[i]) if dp[k] !.. 2022. 5. 24. [백준][Python] 14501번 퇴사 14501번: 퇴사 첫째 줄에 백준이가 얻을 수 있는 최대 이익을 출력한다. www.acmicpc.net 코드 import sys n = int(input()) T = [0]*(n+2) P = [0]*(n+2) dp = [0]*(n+2) for i in range(1,n+1): T[i],P[i] = map(int,sys.stdin.readline().split()) for i in range(1,n+1): if (i+T[i]) 2022. 5. 23. [백준][Python] 2748번 피보나치 수 2 2748번: 피보나치 수 2 피보나치 수는 0과 1로 시작한다. 0번째 피보나치 수는 0이고, 1번째 피보나치 수는 1이다. 그 다음 2번째 부터는 바로 앞 두 피보나치 수의 합이 된다. 이를 식으로 써보면 Fn = Fn-1 + Fn-2 (n ≥ 2)가 www.acmicpc.net 코드 n = int(input()) fn = [0]*(n+1) fn[1] = 1 for i in range(2,n+1): fn[i] = fn[i-2] + fn[i-1] print(fn[n]) 2022. 5. 20. [백준][Python] 21312번 홀짝 칵테일 21312번: 홀짝 칵테일 정진이는 특별한 음료를 가지고 있다. 음료들은 정수로 표현되는 고유 번호를 가지고 있다. 정진이는 이 음료들을 섞어 만든 칵테일을 만든다. 이 칵테일은 홀짝 칵테일이라 부르는데, 홀짝 칵 www.acmicpc.net 코드 n_list = list(map(int,input().split())) odd = [] for i in range(3): if (n_list[i] %2) != 0: odd.append(n_list[i]) ans = 1 if not odd: for i in range(3): ans *= n_list[i] else: for i in range(len(odd)): ans *= odd[i] print(ans) 설명 입력 받은 수가 홀수이면 odd 리스트에 넣어놓는다... 2022. 5. 19. [백준][Python] 15486번 퇴사 2 15486번: 퇴사 2 첫째 줄에 N (1 ≤ N ≤ 1,500,000)이 주어진다. 둘째 줄부터 N개의 줄에 Ti와 Pi가 공백으로 구분되어서 주어지며, 1일부터 N일까지 순서대로 주어진다. (1 ≤ Ti ≤ 50, 1 ≤ Pi ≤ 1,000) www.acmicpc.net 코드 import sys n = int(input()) T = [0]*(n+2) P = [0]*(n+2) dp = [0]*(n+2) for i in range(1,n+1): T[i],P[i] = map(int,sys.stdin.readline().split()) for i in range(1,n+1): if(i+T[i] 2022. 5. 18. [백준][Python] 1890번 점프 1890번: 점프 첫째 줄에 게임 판의 크기 N (4 ≤ N ≤ 100)이 주어진다. 그 다음 N개 줄에는 각 칸에 적혀져 있는 수가 N개씩 주어진다. 칸에 적혀있는 수는 0보다 크거나 같고, 9보다 작거나 같은 정수이며, 가장 www.acmicpc.net 코드 import sys n = int(input()) n_list = [] for _ in range(n): a_list = list(map(int,sys.stdin.readline().split())) n_list.append(a_list) dp = [[0]*n for _ in range(n)] dp[0][0] = 1 for i in range(n): for j in range(n): if i == n-1 and j == n-1: break dow.. 2022. 5. 17. [백준][Python] 1912번 연속합 1912번: 연속합 첫째 줄에 정수 n(1 ≤ n ≤ 100,000)이 주어지고 둘째 줄에는 n개의 정수로 이루어진 수열이 주어진다. 수는 -1,000보다 크거나 같고, 1,000보다 작거나 같은 정수이다. www.acmicpc.net 코드 n = int(input()) n_list = list(map(int,input().split())) sum = [0] * n for i in range(n): sum[i] = max(n_list[i], n_list[i]+sum[i-1]) print(max(sum)) 설명 첫번째 숫자부터 차례대로 이전 값과 더한다. 만약 더한 값이 자기 자신보다 클 경우 sum[i]에 n_list[i]+sum[i-1]을 넣어주고 만약 자기 자신보다 작을 경우 그냥 자신의 값을 넣어준.. 2022. 5. 16. 이전 1 ··· 16 17 18 19 20 21 22 ··· 28 다음 반응형