Algorithm/BOJ(42)
-
[python 파이썬] 백준 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 N,K = map(int, input().split()) weight = [0] gold =[0] for _ in range(N): w, g= map(int, input().split()) weight.append(w) gold.append(g) dp=[[0 for i in range(K+1)] for k in range(N+1)] for w in range(1, N+1): for i in rang..
2021.02.09 -
[python 파이썬] 백준 1535번 안녕
1535번: 안녕 첫째 줄에 사람의 수 N(
2021.02.09 -
[python 파이썬] 백준 1739번 타일링
1793번: 타일링 입력은 여러 개의 테스트 케이스로 이루어져 있다. 각 테스트 케이스는 한 줄로 이루어져 있으며, 숫자 0 ≤ n ≤ 250이 주어진다. www.acmicpc.net 얼핏보면 피보나치지만 문제의 조건에서 2*1 , 2*2 두가지 타일로 채울 수 있다고하여 수기로 채우는 방법을 적어보고 규칙을 찾아 풀었다 def cnt(n): fib=[0 for _ in range(n+1)] if n ==0 or n==1: return 1 fib[0]=1 fib[1]=1 for i in range(2,n+1): fib[i]=fib[i-1]+2*fib[i-2] return fib[n] while True: try: print(cnt(int(input()))) except: break
2021.02.05 -
[python 파이썬] 백준 2565번 파이썬
2565번: 전깃줄 첫째 줄에는 두 전봇대 사이의 전깃줄의 개수가 주어진다. 전깃줄의 개수는 100 이하의 자연수이다. 둘째 줄부터 한 줄에 하나씩 전깃줄이 A전봇대와 연결되는 위치의 번호와 B전봇대와 연결되는 www.acmicpc.net 이 문제는 정렬부터 했어야했는데 정렬을 생각해내지 못했다. 풀이법 1. A의 위치번호로 정렬하기 2. A에 연결된 B의 위치번호가 현재 가리키는 위치번호보다 위에 위치한 전깃줄의 최대 갯수에 +1 3. 전체에서 최대개수빼기 n = int(input()) line=[list(map(int,input().split())) for _ in range(n)] line.sort(key=lambda x :x[0]) dp=[0]*501 for s, d in line: dp[d]=m..
2021.02.05 -
[python 파이썬] 백준 1965번 상자넣기
1965번: 상자넣기 정육면체 모양의 상자가 일렬로 늘어서 있다. 상자마다 크기가 주어져 있는데, 앞에 있는 상자의 크기가 뒤에 있는 상자의 크기보다 작으면, 앞에 있는 상자를 뒤에 있는 상자 안에 넣을 수가 www.acmicpc.net 메모이제이션과 점화식 그리고 max를 사용하면 되겠거니 했는데 max를 어떻게 적용해야할지 떠올리지못했다. 그리고 for문은 왜 하나만 쓰는거에 꽂혀서 이중포문으로 생각을 안했다. 첫번째 풀이 - 틀림 dp를 초기화하고 상자에 들어갈수있다면 1씩 늘려줬는데 1씩 늘려서 그런지 느릴 것이고 그래서 틀린 것 같다. n = int(input()) box = list(map(int,input().split())) dp=[0]*1001 for i in range(n): for j..
2021.02.02 -
[python 파이썬] 백준 13301번 타일장식물
www.acmicpc.net/problem/13301 13301번: 타일 장식물 대구 달성공원에 놀러 온 지수는 최근에 새로 만든 타일 장식물을 보게 되었다. 타일 장식물은 정사각형 타일을 붙여 만든 형태였는데, 한 변이 1인 정사각형 타일부터 시작하여 마치 앵무조개 www.acmicpc.net dp=[0]*n 으로 하면 런타임에러 n = int(input()) dp = [0]*81 dp[0]=1 dp[1]=1 for i in range(2,n): dp[i] = dp[i-1]+dp[i-2] r = dp[n-1] + dp[n-1] + dp[n-2] print( r+r ) 근거 있는 이유를 만들자
2021.02.02