본문 바로가기
반응형

dp33

[BOJ][Python]17626번 풀이 https://www.acmicpc.net/problem/17626 17626번: Four Squares 라그랑주는 1770년에 모든 자연수는 넷 혹은 그 이하의 제곱수의 합으로 표현할 수 있다고 증명하였다. 어떤 자연수는 복수의 방법으로 표현된다. 예를 들면, 26은 52과 12의 합이다; 또한 42 + 32 + 1 www.acmicpc.net import math t = [0 for _ in range(50001)] t[0],t[1],t[2],t[3]=0,1,2,3 for i in range(4,50001): minv=5 a = math.floor(math.sqrt(i)) for j in range(1,a+1): minv = min(minv, t[i-j**2]+1) t[i] = minv print(t.. 2022. 6. 7.
[BOJ][Python]1535번 풀이 https://www.acmicpc.net/problem/1535 1535번: 안녕 첫째 줄에 사람의 수 N(≤ 20)이 들어온다. 둘째 줄에는 각각의 사람에게 인사를 할 때, 잃는 체력이 1번 사람부터 순서대로 들어오고, 셋째 줄에는 각각의 사람에게 인사를 할 때, 얻는 기쁨이 1번 www.acmicpc.net n = int(input()) p = [0] h = [0] p.extend(list(map(int, input().split()))) h.extend(list(map(int, input().split()))) t = [[0 for _ in range(101)] for _ in range(n+1)] for i in range(1,n+1): for j in range(101): if j 2022. 6. 6.
[BOJ][Python]12865번 풀이 길었던 대장정의 끝입니다. 정말 오랫동안 고민했던 문제입니다만 결국 온전히 제 힘만으로는 풀어내지 못했네요. 배낭 문제는 많으니까 다음에 다른 문제를 혼자서 풀어서 설욕을 해야겠어요. https://www.acmicpc.net/problem/12865 12865번: 평범한 배낭 첫 줄에 물품의 수 N(1 ≤ N ≤ 100)과 준서가 버틸 수 있는 무게 K(1 ≤ K ≤ 100,000)가 주어진다. 두 번째 줄부터 N개의 줄에 거쳐 각 물건의 무게 W(1 ≤ W ≤ 100,000)와 해당 물건의 가치 V(0 ≤ V ≤ 1,000) www.acmicpc.net import sys ssr = sys.stdin.readline n,k = map(int, ssr().split()) t = [[0 for _ in .. 2022. 6. 5.
[BOJ][Python]14606번 풀이 https://www.acmicpc.net/problem/14606 14606번: 피자 (Small) 예제1의 입력이 1이므로, 게임 시작부터 갑이 분리할 수 있는 피자탑이 없습니다. 따라서 갑이 얻는 즐거움은 0입니다. 예제2의 정답 3은 다음과 같은 과정을 통해 얻어집니다. 먼저 놀이를 시작 www.acmicpc.net import math n = int(input()) t = [0 for _ in range(n+1)] t[1] = 0 for i in range(2,n+1): t[i] = math.ceil(i/2)*(i-math.ceil(i/2)) + t[math.ceil(i/2)] + t[i-math.ceil(i/2)] print(t[n]) 처음엔 이게 왜 dp인가 싶었는데 식을 구하려고 그림을 그.. 2022. 6. 5.
[BOJ][Python]15489번 풀이 https://www.acmicpc.net/problem/15489 15489번: 파스칼 삼각형 첫째 줄에 양의 정수 R, C, W가 공백을 한 칸씩 두고 차례로 주어진다. (단, 2 ≤ R+W ≤ 30, 2 ≤ C+W ≤ 30, 1 ≤ W ≤ 29, C ≤ R) www.acmicpc.net t = [[0 for _ in range(31)] for _ in range(31)] t[1][1] = 1 for i in range(2,31): for j in range(1,31): t[i][j] = t[i-1][j-1] + t[i-1][j] r,c,w = map(int, input().split()) answer = 0 for i in range(w): for j in range(i+1): answer += t.. 2022. 6. 4.
[BOJ][Python]16395번 풀이 https://www.acmicpc.net/problem/16395 16395번: 파스칼의 삼각형 파스칼의 삼각형은 이항계수를 삼각형 형태로 배열한 것인데, 블레즈 파스칼(1623-1662)을 따라 이름 붙여졌다. 단순한 형태로, 파스칼의 삼각형은 다음과 같은 방법으로 만들 수 있다. N번째 행 www.acmicpc.net t = [[0 for _ in range(31)] for _ in range(31)] t[1][1] = 1 for i in range(2,31): for j in range(1,31): t[i][j] = t[i-1][j-1] + t[i-1][j] n,k = map(int, input().split()) print(t[n][k]) 예전에 이항 계수 문제를 dp가 아닌 방법으로 풀었던 적.. 2022. 6. 3.
[BOJ][Python]14916번 풀이 https://www.acmicpc.net/problem/14916 14916번: 거스름돈 첫째 줄에 거스름돈 액수 n(1 ≤ n ≤ 100,000)이 주어진다. www.acmicpc.net t = [-1 for _ in range(100001)] t[2],t[4],t[5],t[6],t[7],t[8] = 1,2,1,3,2,4 for i in range(9,100001): t[i] = min((t[i-2]+t[2]),(t[i-5]+t[5])) print(t[int(input())]) 이번에도 평이한 난이도의 문제입니다만 생각을 어떻게 하는지에 따라 결론에 다다르는 시간이 다를 것 같네요. 일단 가장 적은 갯수의 동전을 반환하기 위해서는 뭐가 됐든 숫자가 늘 때 1개만 늘어나는게 가장 바람직한 일이죠. 따라.. 2022. 6. 2.
[BOJ][Python]13301번 풀이 https://www.acmicpc.net/problem/13301 13301번: 타일 장식물 대구 달성공원에 놀러 온 지수는 최근에 새로 만든 타일 장식물을 보게 되었다. 타일 장식물은 정사각형 타일을 붙여 만든 형태였는데, 한 변이 1인 정사각형 타일부터 시작하여 마치 앵무조개 www.acmicpc.net n = int(input()) if n == 1: print(4) else: t = [0 for _ in range(81)] t[0],t[1] = 1,1 for i in range(2,81): t[i] = t[i-1]+t[i-2] print(2*t[n-1]+2*(t[n-1]+t[n-2])) 그렇게 어려운 문제는 아닙니다. n=1인 경우에 점화식이 적용되지 않는 점을 잊지 마시구요. 피보나치는 정말 .. 2022. 6. 1.
[BOJ][Python]9625번 풀이 https://www.acmicpc.net/problem/9625 9625번: BABBA 상근이는 길을 걷다가 신기한 기계를 발견했다. 기계는 매우 매우 큰 화면과 버튼 하나로 이루어져 있다. 기계를 발견했을 때, 화면에는 A만 표시되어져 있었다. 버튼을 누르니 글자가 B로 변했 www.acmicpc.net n = int(input()) t = [[] for _ in range(n+1)] t[0] = [1,0] for i in range(1,n+1): t[i] = [t[i-1][1],t[i-1][0]+t[i-1][1]] print(*t[n]) 이번 문제도 쉽습니다. 오히려 점화식을 찾기 위해서 하나씩 쓰다보면 헷갈릴 수 있는 문제라고 생각해요. A는 B로 바뀌고 B는 BA로 바뀌기 때문에 B는 갯수가 줄.. 2022. 5. 30.
[BOJ][Python]9655번 풀이 https://www.acmicpc.net/problem/9655 9655번: 돌 게임 상근이가 게임을 이기면 SK를, 창영이가 게임을 이기면 CY을 출력한다. www.acmicpc.net n = int(input()) if n%2==0: print('CY') else: print('SK') 이건 고민할 필요도 없는 문제입니다. 1과 3밖에 선택하지 못하는 상황이기에 경우를 따져볼 필요도 없죠. 홀수+홀수는 무조건 짝수입니다. 홀수+홀수+홀수는 무조건 홀수죠. 어째서 실버5인지도 모르겠는 문제네요. 브론즈5가 딱 맞지 않나 생각합니다. 2022. 5. 29.
반응형